آموزش رایگان PHP

آموزش ارث‌بری (Inheritance) در PHP به زبان ساده + مثال‌های کاربردی

1405/07/28 22:21 محراب حسن زاده
آموزش ارث‌بری (Inheritance) در PHP به زبان ساده + مثال‌های کاربردی

ارث‌بری (Inheritance) در PHP چیست؟

ارث‌بری یکی از پایه‌ای‌ترین و مهم‌ترین مفاهیم برنامه‌نویسی شیءگرا (OOP) است. این مفهوم به ما اجازه می‌دهد یک کلاس جدید بر اساس یک کلاس موجود بسازیم. کلاس جدید تمام ویژگی‌ها (Properties) و متدهای (Methods) عمومی و محافظت‌شده کلاس والد را به ارث می‌برد.

با استفاده از ارث‌بری، شما دیگر نیازی به نوشتن مجدد کدهای تکراری ندارید. این اصل به عنوان قانون DRY (Don't Repeat Yourself) شناخته می‌شود و یکی از اصول کلیدی در نوشتن کدهای استاندارد و تمیز است.

چگونه از ارث‌بری در PHP استفاده کنیم؟ (کلمه کلیدی extends)

در زبان PHP، برای ارث‌بری از یک کلاس دیگر، از کلمه کلیدی extends استفاده می‌کنیم. کلاس اصلی را Parent Class (کلاس والد یا پایه) و کلاس جدید را Child Class (کلاس فرزند یا مشتق شده) می‌نامند.

در ادامه یک مثال ساده از پیاده‌سازی ارث‌بری در PHP را مشاهده می‌کنید:


class Vehicle {
    public $brand;
    public $color;

    public function __construct($brand, $color) {
        $this->brand = $brand;
        $this->color = $color;
    }

    public function intro() {
        return "This vehicle is a {$this->brand} and its color is {$this->color}.";
    }
}

// کلاس Car از کلاس Vehicle ارث‌بری می‌کند
class Car extends Vehicle {
    public $doors = 4;

    public function message() {
        return "I am a car!";
    }
}

$myCar = new Car("Toyota", "Red");
echo $myCar->intro(); // خروجی: This vehicle is a Toyota and its color is Red.

سطوح دسترسی (Access Modifiers) در ارث‌بری

نقش سطوح دسترسی در ارث‌بری بسیار حیاتی است. سه نوع سطح دسترسی در PHP وجود دارد:

  • public: از همه جا (داخل کلاس، کلاس فرزند و خارج از کلاس) قابل دسترسی است.
  • protected: فقط در داخل خود کلاس و کلاس‌های فرزند قابل دسترسی است و خارج از کلاس ارور می‌دهد.
  • private: فقط و فقط در داخل همان کلاسی که تعریف شده قابل دسترسی است و کلاس فرزند به آن دسترسی ندارد.

class ParentClass {
    public $publicVar = "عمومی";
    protected $protectedVar = "محافظت شده";
    private $privateVar = "خصوصی";
}

class ChildClass extends ParentClass {
    public function showValues() {
        echo $this->publicVar;    // بدون مشکل کار می‌کند
        echo $this->protectedVar; // بدون مشکل کار می‌کند
        echo $this->privateVar;   // خطا می‌دهد: تعریف نشده است
    }
}

بازنویسی متدها (Method Overriding) و کلمه کلیدی parent

گاهی اوقات می‌خواهید رفتاری را که در کلاس والد تعریف شده، در کلاس فرزند تغییر دهید. به این کار Method Overriding یا بازنویسی متد گفته می‌شود. اگر بخواهید متد اصلی والد را حفظ کرده و فقط چیزی به آن اضافه کنید، می‌توانید از کلمه کلیدی parent:: استفاده کنید.


class Employee {
    protected $salary;

    public function __construct($salary) {
        $this->salary = $salary;
    }

    public function getDetails() {
        return "حقوق پایه: " . $this->salary;
    }
}

class Manager extends Employee {
    private $bonus;

    public function __construct($salary, $bonus) {
        // فراخوانی متد سازنده کلاس والد
        parent::__construct($salary);
        $this->bonus = $bonus;
    }

    // بازنویسی متد کلاس والد
    public function getDetails() {
        return parent::getDetails() . " | پاداش: " . $this->bonus;
    }
}

$manager = new Manager("5000", "1500");
echo $manager->getDetails(); // خروجی: حقوق پایه: 5000 | پاداش: 1500

جلوگیری از ارث‌بری با کلمه کلیدی final

اگر تمایل ندارید کلاسی توسط کلاس‌های دیگر به ارث برده شود، یا می‌خواهید از بازنویسی یک متد خاص جلوگیری کنید، می‌توانید از کلمه کلیدی final استفاده کنید.


final class SecureClass {
    // این کلاس نمی‌تواند توسط کلاس دیگری extend شود
}

class NormalClass {
    final public function secureMethod() {
        // این متد در کلاس فرزند قابل Override نیست
    }
}

نتیجه‌گیری

ارث‌بری یکی از ستون‌های اصلی شیءگرایی است که با ساختاردهی منظم به کدها، خوانایی و قابلیت نگهداری پروژه‌های بزرگ PHP را تضمین می‌کند. استفاده مناسب از سطوح دسترسی protected و بهره‌گیری از کلمه کلیدی parent دست شما را برای پیاده‌سازی الگوهای طراحی پیچیده و استاندارد باز نگه می‌دارد.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل
1405/05/13 21:34

آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل

مطالعه بیشتر
آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی
1403/08/04 18:52

آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی

مطالعه بیشتر
آموزش گام به گام اتصال به دیتابیس با MySQLi در PHP (امن و استاندارد)
1405/05/04 23:40

آموزش گام به گام اتصال به دیتابیس با MySQLi در PHP (امن و استاندارد)

مطالعه بیشتر
آموزش کامل دستورات شرطی در PHP: راهنمای جامع if، else و elseif
1405/04/04 00:05

آموزش کامل دستورات شرطی در PHP: راهنمای جامع if، else و elseif

مطالعه بیشتر
آموزش Responsive Design با استفاده از Media Queries: طراحی واکنش‌گرا برای تمامی دستگاه‌ها
1402/06/10 18:07

آموزش Responsive Design با استفاده از Media Queries: طراحی واکنش‌گرا برای تمامی دستگاه‌ها

مطالعه بیشتر
آموزش Prepared Statement در PHP: امن‌سازی دیتابیس در برابر SQL Injection
1405/05/13 21:17

آموزش Prepared Statement در PHP: امن‌سازی دیتابیس در برابر SQL Injection

مطالعه بیشتر
آموزش ساختار استاندارد و بهینه پروژه PHP به سبک گوگل
1405/05/04 23:25

آموزش ساختار استاندارد و بهینه پروژه PHP به سبک گوگل

مطالعه بیشتر
آموزش توسعه و مدیریت پروژه‌های بزرگ در جاوا اسکریپت: آشنایی با ابزارها و فریم‌ورک‌های کاربردی
1403/08/04 19:43

آموزش توسعه و مدیریت پروژه‌های بزرگ در جاوا اسکریپت: آشنایی با ابزارها و فریم‌ورک‌های کاربردی

مطالعه بیشتر
چگونه اسکریپت‌های ساده جاوا اسکریپت را در مرورگر بنویسیم و اجرا کنیم: راهنمای کامل برای مبتدیان
1402/07/02 21:37

چگونه اسکریپت‌های ساده جاوا اسکریپت را در مرورگر بنویسیم و اجرا کنیم: راهنمای کامل برای مبتدیان

مطالعه بیشتر
پیمایش اشیاء و آرایه‌ها در جاوا اسکریپت: راهنمای کامل برای Object.keys، Object.values، for...in و for...of
1403/07/04 18:12

پیمایش اشیاء و آرایه‌ها در جاوا اسکریپت: راهنمای کامل برای Object.keys، Object.values، for...in و for...of

مطالعه بیشتر
آموزش استفاده از تگ‌های خاص HTML: تگ‌های کاربردی برای طراحی وب‌سایت
1402/05/22 23:53

آموزش استفاده از تگ‌های خاص HTML: تگ‌های کاربردی برای طراحی وب‌سایت

مطالعه بیشتر
آموزش استفاده از box-shadow و text-shadow در CSS: ایجاد سایه‌های زیبا و جذاب
1403/08/11 21:20

آموزش استفاده از box-shadow و text-shadow در CSS: ایجاد سایه‌های زیبا و جذاب

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد