PHP OOP - السمات
PHP - ما هي السمات؟
تدعم PHP الوراثة الفردية فقط: يمكن للفئة الفرعية أن ترث من والد واحد فقط.
لذا ، ماذا لو احتاج الفصل إلى وراثة سلوكيات متعددة؟ سمات OOP تحل هذه المشكلة.
تُستخدم السمات للإعلان عن الأساليب التي يمكن استخدامها في فئات متعددة. يمكن أن تحتوي السمات على طرق وأساليب مجردة يمكن استخدامها في فئات متعددة ، ويمكن أن تحتوي هذه الطرق على أي معدل وصول (عام أو خاص أو محمي).
يتم الإعلان عن السمات trait
بالكلمة الرئيسية:
بناء الجملة
<?php
trait TraitName {
// some code...
}
?>
لاستخدام سمة في الفصل ، استخدم
use
الكلمة الأساسية:
بناء الجملة
<?php
class MyClass {
use TraitName;
}
?>
لنلقي نظرة على مثال:
مثال
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
شرح المثال
هنا ، نعلن سمة واحدة: message1. ثم نقوم بإنشاء فصل دراسي: مرحبًا. يستخدم الفصل السمة ، وستكون جميع الطرق الموجودة في السمة متاحة في الفصل.
إذا احتاجت الفئات الأخرى إلى استخدام وظيفة msg1 () ، فما عليك سوى استخدام سمة message1 في تلك الفئات. هذا يقلل من تكرار الكود ، لأنه لا توجد حاجة لإعادة الإعلان عن نفس الطريقة مرارًا وتكرارًا.
PHP - استخدام سمات متعددة
لنلق نظرة على مثال آخر:
مثال
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
trait message2 {
public function msg2()
{
echo "OOP reduces code duplication!";
}
}
class Welcome {
use message1;
}
class Welcome2 {
use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 =
new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
شرح المثال
هنا ، نعلن عن سمتين: message1 و message2. ثم نقوم بإنشاء فصلين: Welcome and Welcome2. تستخدم الفئة الأولى (الترحيب) سمة message1 ، بينما تستخدم الفئة الثانية (Welcome2) سمات message1 و message2 (يتم فصل السمات المتعددة بفاصلة).