0Pricing
PHP Academy · درس

الفئات والأساليب المجرّدة

عرّفوا فئات أساسية مطبّقة جزئيًا باستخدام الكلمات المفتاحية abstract

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

مقدمة: الأصناف المجرّدة

لا يمكن إنشاء مثيل من صنف مجرّد مباشرةً — فهو قالب. تصرّح الدوال المجردة عن توقيع دون تنفيذ؛ ويجب على الأصناف الفرعية توفير تنفيذها.

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

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

  • يُصرَّح عنها باستخدام abstract class
  • لا تحتوي الدوال المجردة على جسم: abstract public function x();
  • يجب على الأصناف الفرعية تنفيذ جميع الدوال المجردة
  • يمكن أن تحتوي على دوال مجرّدة وأخرى ملموسة

تعريف صنف مجرّد

مثال:

<?php
abstract class Animal {
    public function __construct(protected string $name) {}

    // Must be implemented by each subclass
    abstract public function sound(): string;

    // Shared concrete method
    public function introduce(): string {
        return "I am {$this->name} and I say: " . $this->sound();
    }
}

تنفيذ الدوال المجرّدة

متابعة:

<?php
class Dog extends Animal {
    public function sound(): string { return 'Woof'; }
}

class Cat extends Animal {
    public function sound(): string { return 'Meow'; }
}

$animals = [new Dog('Rex'), new Cat('Whiskers')];
foreach ($animals as $a) {
    echo $a->introduce() . PHP_EOL;
}
// I am Rex and I say: Woof
// I am Whiskers and I say: Meow

نمط Template Method

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

<?php
abstract class DataProcessor {
    // Template method: defines the algorithm skeleton
    final public function process(array $data): array {
        $data = $this->validate($data);
        $data = $this->transform($data);
        return $this->format($data);
    }

    abstract protected function validate(array $data): array;
    abstract protected function transform(array $data): array;

    protected function format(array $data): array { return $data; }
}

الصنف المجرّد مقابل الواجهة

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

<?php
// Use abstract class when:
// - Subclasses share implementation code
// - You need constructor logic or state

// Use interface when:
// - Defining a contract (no implementation needed)
// - Multiple inheritance of type is needed

// A class can only extend ONE abstract class
// but can implement MULTIPLE interfaces

تنفيذ جزئي

متقدم:

<?php
abstract class Repository {
    // Concrete method available to all subclasses
    protected function findById(int $id, string $table): array {
        $stmt = $this->getDb()->prepare("SELECT * FROM $table WHERE id = ?");
        $stmt->execute([$id]);
        return $stmt->fetch(PDO::FETCH_ASSOC) ?: [];
    }

    abstract protected function getDb(): PDO;
    abstract public function find(int $id): array;
}

النمط

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

متى تُستخدم

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

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

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

أخطاء شائعة

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

  • لا يمكن إنشاء مثيل من الأصناف المجرّدة باستخدام new
  • يجب تنفيذ جميع الدوال المجرّدة في الأصناف الفرعية الملموسة
  • استخدموا نمط Template Method لتعريف هياكل الخوارزميات
  • يمكن أن تحتوي الأصناف المجرّدة على بُناة وخصائص ودوال ملموسة

تحقق سريع

هل يمكنكم إنشاء مثيل من صنف مجرّد مباشرةً باستخدام 'new'؟

مراجعة: الأصناف المجرّدة

الملخص:

  • لا يمكن إنشاء مثيل من الأصناف المجرّدة باستخدام new
  • يجب تنفيذ جميع الدوال المجرّدة في الأصناف الفرعية الملموسة
  • استخدموا نمط Template Method لتعريف هياكل الخوارزميات
  • يمكن أن تحتوي الأصناف المجرّدة على بُناة وخصائص ودوال ملموسة

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

هل درس «الفئات والأساليب المجرّدة» مجاني؟

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

ماذا ستتعلم في «الفئات والأساليب المجرّدة»؟

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

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

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

كم من الوقت يستغرق درس «الفئات والأساليب المجرّدة»؟

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

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

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

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

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