StalkerClasses
Новичок
Можно ли как-то в класс динамически добавлять трейты?
Лучше пример - вот и скажи как сделать динамический трейт.Нет такого места. Тебе правильно сказали, программирование - не твое.
class A{}
trait B{
public function foo(){
return 'foo';
}
}
trait C{
public function bar(){
return 'bar';
}
}
function getObjectWithTrait( $class, $trait ){
$tmpfname = tempnam("/tmp", "FOO");
file_put_contents($tmpfname, "<"."?php return new class extends ".$class."{ use ".$trait.";};");
return include $tmpfname;
}
echo getObjectWithTrait( 'A', 'B' )->foo();
echo getObjectWithTrait( 'A', 'C' )->bar();
<?php
trait T1{
function foo(){echo 123;}
}
trait T2{
function foo(){echo 456;}
}
class A{}
$my_obj = true ? new class extends A{use T1;} : new class extends A{use T2;};
(function (A $T) {$T->foo();} )($my_obj);
Это интересный подход https://rmcreative.ru/blog/post/mixin-v-phpэто называется mixin, гугль, коль нравятся страпоны.
Шта? Так важно или нет?Но мне важно последовательность в которой будут добавляться трейты в класс, т.е. переменные в трейтах.
Трейты можно добавить в любой последовательности.
Важно.Шта? Так важно или нет?
Этот "интересный" паттерн называется поведение. Ты год-то смотри. Саша с Тяном их сделали в Yii когда трейтов не было.Это интересный подход https://rmcreative.ru/blog/post/mixin-v-php