0Pricing
PHP Academy · درس

توسيع الفئات باستخدام الوراثة

استخدموا extends لبناء تسلسلات هرمية للفئات وإعادة تعريف الأساليب

توسيع الفئات باستخدام الوراثة درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.

مقدمة: الوراثة في PHP

الوراثة تتيح لصنف (الابن) إعادة استخدام شيفرة صنف آخر (الأب) وتوسيعها باستخدام الكلمة المفتاحية extends. يدعم PHP الوراثة الأحادية.

المفاهيم الأساسية

المفاهيم الأساسية:

  • يرث الابن جميع الأعضاء العامة والمحمية
  • تجاوزوا دوال الصنف الأب لتغيير السلوك
  • استدعوا دالة الصنف الأب باستخدام parent::
  • استخدموا final لمنع التجاوز

extends الأساسي

مثال:

<?php
class Shape {
    public function __construct(protected string $color) {}
    public function describe(): string { return "A {$this->color} shape"; }
}

class Circle extends Shape {
    public function __construct(string $color, private float $radius) {
        parent::__construct($color);
    }
    public function area(): float { return M_PI * $this->radius ** 2; }
}

$c = new Circle('red', 5);
echo $c->describe();   // A red shape
echo round($c->area()); // 79

تجاوز الدوال

متابعة:

<?php
class Logger {
    public function log(string $msg): void {
        echo "[LOG] $msg" . PHP_EOL;
    }
}

class DatabaseLogger extends Logger {
    public function log(string $msg): void {
        // Extend parent behavior
        parent::log($msg);
        // Also save to DB
        echo "[DB] Saved: $msg" . PHP_EOL;
    }
}

$l = new DatabaseLogger();
$l->log('User login');

الكلمة المفتاحية final

مزيد من التعمق:

<?php
class PaymentProcessor {
    final public function processPayment(float $amount): void {
        // Critical logic — cannot be overridden
        $this->validate($amount);
        $this->charge($amount);
        $this->log($amount);
    }

    protected function validate(float $amount): void { /* ... */ }
    protected function charge(float $amount): void   { /* ... */ }
    protected function log(float $amount): void      { /* ... */ }
}

التحقق باستخدام instanceof

استخدام عملي:

<?php
class Vehicle {}
class Car extends Vehicle {}
class ElectricCar extends Car {}

$ev = new ElectricCar();

var_dump($ev instanceof ElectricCar); // true
var_dump($ev instanceof Car);         // true
var_dump($ev instanceof Vehicle);     // true

// Also works with interfaces
var_dump($ev instanceof Countable);   // false

الصنف الأساسي المجرّد

متقدم:

<?php
abstract class Notification {
    abstract public function send(string $message): bool;

    public function sendBatch(array $messages): void {
        foreach ($messages as $msg) {
            $this->send($msg);
        }
    }
}

class EmailNotification extends Notification {
    public function send(string $message): bool {
        echo "Email: $message" . PHP_EOL;
        return true;
    }
}

النمط

تُستخدم أنماط الوراثة الشائعة في PHP لحل مشكلات التصميم المتكررة بوضوح. طبّقوها باتساق للحفاظ على شيفرة سهلة القراءة والصيانة.

متى تُستخدم

إن معرفة متى تُطبَّق الوراثة في PHP لا تقل أهمية عن معرفة كيفية تطبيقها. فالإفراط في استخدامها يؤدي إلى التعقيد، بينما يؤدي عدم استخدامها بما يكفي إلى التكرار.

مثال من العالم الحقيقي

تظهر الوراثة في PHP بكثرة في أطر العمل وORMs وطبقات الخدمات في التطبيقات الواقعية. ويساعدكم فهمها على الإسهام في مشاريع PHP الاحترافية.

أخطاء شائعة

تجنبوا هذه الأخطاء عند استخدام الوراثة في PHP:

  • استدعوا دائمًا parent::__construct() لتهيئة حالة الصنف الأب
  • لا تتجاوزوا الدوال لمجرد استدعاء دالة الصنف الأب من دون إجراء تغييرات
  • استخدموا final للدوال الحساسة أمنيًا
  • فضّلوا التركيب على التسلسلات الهرمية العميقة للوراثة

تحقق سريع

ما الكلمة المفتاحية التي تمنع تجاوز دالة في صنف فرعي؟

مراجعة: الوراثة في PHP

الملخص:

  • استدعوا دائمًا parent::__construct() لتهيئة حالة الصنف الأب
  • لا تتجاوزوا الدوال لمجرد استدعاء دالة الصنف الأب من دون إجراء تغييرات
  • استخدموا final للدوال الحساسة أمنيًا
  • فضّلوا التركيب على التسلسلات الهرمية العميقة للوراثة

الأسئلة الشائعة

هل درس «توسيع الفئات باستخدام الوراثة» مجاني؟

نعم — نص درس «توسيع الفئات باستخدام الوراثة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.

ماذا ستتعلم في «توسيع الفئات باستخدام الوراثة»؟

استخدموا extends لبناء تسلسلات هرمية للفئات وإعادة تعريف الأساليب تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟

لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «توسيع الفئات باستخدام الوراثة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟

نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. توسيع الفئات باستخدام الوراثة
  2. الفئات والأساليب المجرّدة
  3. تطبيق الواجهات
  4. Traits لإعادة استخدام التعليمات البرمجية
← العودة إلى PHP Academy