Хотя этот вопрос несколько не зависит от языка ( не зависит от языков ООП, поддерживающих черты ), я возился с ночными сборками PHP 5.4a и столкнулся со странным сценарием.Кажется, я больше не могу запустить установку, но это уже другая история.
Учитывая следующий фрагмент:
trait MyTrait
{
public function myMethod(self $object)
{
var_dump($object);
}
}
class MyClass
{
use MyTrait;
}
$myObject = new MyClass();
$myObject->myMethod('foobar'); // <-- here
Что должно произойти?Я надеюсь на ошибку, указывающую, что $object
должен быть экземпляром MyClass
.
Когда методы черты копируются в класс use
, копируются ли они дословно, чтобы разрешить классссылки на наследование, подобные этим?Это предполагаемая функциональность Черты?( Я не работал с другим языком, который их поддерживал )