PHP में OOP के साथ ट्रेट्स के काम करने में विधियों की प्राथमिकता
यदि कक्षा और ट्रेट में एक ही नाम की विधि है, तो कक्षा की विधि ट्रेट की विधि को अधिलेखित कर देगी:
<?php
trait TestTrait
{
// method नाम की विधि:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// method नाम की एक ही विधि:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // 'test' आउटपुट करेगा - कक्षा की अपनी विधि काम कर गई
?>
यदि कक्षा के पास स्वयं ऐसी कोई विधि नहीं है, लेकिन ट्रेट की विधियों और मूल कक्षा की विधियों के नामों में संघर्ष है, तो ट्रेट की विधियों को प्राथमिकता होती है:
<?php
trait TestTrait
{
// method नाम की विधि:
public function method()
{
return 'trait';
}
}
// मूल कक्षा:
class ParentClass
{
// method नाम की विधि:
public function method()
{
return 'parent';
}
}
// कक्षा मूल से method विधि को विरासत में लेती है:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // 'trait' आउटपुट करेगा, क्योंकि ट्रेट को प्राथमिकता है
?>