الفرق بين المراجعتين لصفحة: «PHP/class inheritance»
لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
سطر 53: | سطر 53: | ||
== مصادر == | == مصادر == | ||
* [http://php.net/manual/en/language.oop5.inheritance.php صفحة Object Inheritance في توثيق PHP الرسمي.] | * [http://php.net/manual/en/language.oop5.inheritance.php صفحة Object Inheritance في توثيق PHP الرسمي.] | ||
[[تصنيف:PHP]] | [[تصنيف:PHP|{{SUBPAGENAME}}]] | ||
[[تصنيف:PHP OOP]] | [[تصنيف:PHP OOP|{{SUBPAGENAME}}]] |
مراجعة 15:39، 28 يناير 2018
وراثة الكائنات من المبادئ المعروفة في البرمجة كائنية التوجه وتستخدمه 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'