ارثبری (PHP Inheritance)
وراثت (Inheritance): قدرتِ نسلها 🧬👑
وراثت یعنی یک کلاسِ جدید (فرزند) ویژگیها و رفتارهایِ یک کلاسِ موجود (والد) را به ارث ببرد. این باعث میشود در کدنویسی صرفهجویی کنیم و کدهایِ تکراری ننویسیم.
استفاده از کلمه کلیدیِ extends
کلاسِ فرزند با extends تمامِ متعلقاتِ public و protected والد را صاحب میشود.
بازنویسی (Overriding):
فرزند میتواند متدی که از پدر ارث برده را مجدداً برای خودش تعریف کند تا رفتارِ متفاوتی نشان دهد. مثلاً "صدایِ حیوان" برای گربه به "میو" تغییر کند.
final استفاده کنید. این یعنی این کلاس آخرین نسخهیِ نسلِ خود است!
دسترسی به والد:
اگر بخواهید داخلِ فرزند، متدِ والد را صدا بزنید، از parent::methodName() استفاده کنید.
بخش تخصصی: معماریِ پیشرفته و مهندسیِ اشیاء 🐘💎
برنامهنویسیِ شیءگرا در PHP پس از نسخهیِ ۷ و ۸ تغییراتِ بنیادینی داشته و به ابزاری بسیار قدرتمند برایِ ساختِ سیستمهایِ پیچیده تبدیل شده است.
۱. ساختارِ حافظه و Object Handles
در PHP، متغیرهایی که حاویِ یک شیء هستند، خودِ شیء را ذخیره نمیکنند؛ بلکه یک Identifier یا دستگیره (Handle) را نگه میدارند که به جدولِ اشیاءِ درونیِ موتورِ Zend Engine اشاره میکند. به همین دلیل است که وقتی یک شیء را به تابعی پاس میدهید، تغییرات در همان شیءِ اصلی اعمال میشود (شبهارجاع).
۲. رعایتِ اصولِ SOLID
در طراحیِ کلاسها، همیشه به اصلِ Single Responsibility پایبند باشید. یک کلاس باید فقط یک دلیل برایِ تغییر داشته باشد. استفاده از Interfaces به شما اجازه میدهد وابستگیهایِ کدتان را به حداقل برسانید (Dependency Inversion).
۳. کدهایِ JIT-Friendly
موتورِ JIT در PHP 8 کدها را به زبانِ ماشین تبدیل میکند. نوشتنِ کدهایِ شیءگرا با ساختارِ مشخص و استفاده از Property Typing به JIT کمک میکند تا کدهایِ شما را بسیار بهینهتر اجرا کند.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
کلاسی به نام Strawberry بسازید که از کلاسِ Fruit ارثبری کند.
<?php
class Fruit {}
class Strawberry extends Fruit {
}
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.