وراثة الكائنات في PHP

من موسوعة حسوب
< PHP
مراجعة 03:50، 4 أبريل 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (نقل عبد اللطيف ايمش صفحة PHP/OOP/inheritance إلى PHP/class inheritance: إعادة هيكلة التوثيق)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

وراثة الكائنات من المبادئ المعروفة في البرمجة كائنية التوجه وتستخدمه PHP في نموذج الكائنات الخاصّ بها. يؤثّر هذا المبدأ على العلاقة التي تربط بين الأصناف والكائنات.

فعلى سبيل المثال، عند توسيع صنف معين، يرث الصنف الفرعي جميع التوابع من نوع public و protected من الصنف الأب، وإن لم يتجاوز (override،أي يعيد تعريف) الصنف الابن هذه التوابع فإنّها ستحافظ على وظيفتها الأصلية.

يساعد مبدأ وراثة الكائنات في تعريف الوظائف التي تؤديها التوابع وجعلها أكثر تجريدًا، ويتيح أداء المزيد من الوظائف في الكائنات المتشابهة دون الحاجة إلى إعادة كتابة تلك الوظائف كلّ مرة.

ملاحظة: يجب تعريف الأصناف قبل استخدامها في حال عدم استخدام خاصية التحميل التلقائي. وفي حال توسيع صنف لصنف آخر، يجب التصريح عن الصنف الأب قبل بنية الصنف الابن. تنطبق هذه القاعدة على الأصناف التي ترث أصنافًا وواجهات أخرى.

المثال 1: مثال على وراثة الكائنات

<?php

class Foo
{
    public function printItem($string)
    {
        echo 'Foo: ' . $string . PHP_EOL;
    }
    
    public function printPHP()
    {
        echo 'PHP is great.' . PHP_EOL;
    }
}

class Bar extends Foo
{
    public function printItem($string)
    {
        echo 'Bar: ' . $string . PHP_EOL;
    }
}

$foo = new Foo();
$bar = new Bar();
$foo->printItem('baz');
$foo->printPHP();
$bar->printItem('baz');
$bar->printPHP();

?>

تعطي الشيفرة السابقة المخرجات التالية:

'Foo: baz'
'PHP is great'
'Bar: baz'
'PHP is great'

مصادر