هي طريقة للتخلص من القيود التي فرضتها الوراثة الفرديه لأن لغة PHP لا تدعم التوريث المتعدد, فبالرغم من قوة الوراثة المتعددة إلا أنها تتسبب في مشاكل وتعقيدات كثيرة لهذا أنتجت PHP ما يسمى بالسمات.
صيغة تعريف السمات Traits Syntax trait A{ //code here }ويتم الوريث المتعدد للسمات باستخدام الكلمة use .. لاحظ الكود التالي :
<?php trait A { public function test(){ return "user1"; } } trait B { public function test2(){ return "user2"; } } class c { use A,B; } $obj= new c(); echo $obj->test(); echo "<br>"; echo $obj->test2(); ?>
لاحظ التوريث المتعدد في السطر رقم 12، بحيث تم توريث المتعدد للسمتين A,B للفئة C
[button title=”عرض نتيجة / تحميل الكود” link=”https://makiomar.com/php-oop/traits/php_traits.php” target=”_blank” size=”” color=”” class=””]
خصائص السمات تشبه السمات , الفئات المجرده ( PHP Abstract ) حيث لا يمكن انشاء كائنات منها تعتبر السمات وسيلة لـ ” النسخ واللصق ” أثناء تشغيل الكود تشبه السمات , الواجهات ( PHP Interfaces ) إلا أنه يتم إضافة كود قابل للتنفيذ داخل السمات على عكس الواجهات التي يتم تعريفها دون كود قابل للتنفيذ تُستخدم السمات عند تكرار كود ما أكثر من بين فئات مختلفة.للتوضيح أكثر :
نعلم أن الواجهات هي عبارة عن دوال أو طرق ( Methods ) بدون كود قابل للتنفيذ وفائدتها أنه يمكن تطبيق هذه الواجهات على أكثر من فئة مختلفة ولكن داخل كل فئة سيتم تعريف سلوك مختلف لهذه الواجهه.
أما السمات فهي الأخرى تحتوي على دوال أو طرق ( Methods ) ولكن داخلها كود قابل للتنفيذ وهذا الكود سيتم استخدامه أكثر من مره داخل أكثر من فئة ولذلك تم تعريف هذا الكود داخل السمات.


