Как это делают классы?Использование черт над классами, почему?
Class Main
{
$this->a = new A();
$this->b = new B();
$this->c = new C();
$this->b->doTranslate($this->a->saySomething());
}
И как это сделать, не так ли?
Class Main {
use A;
use B;
use C;
$this->doTranslate($this->saySomething());
}
У меня нет много знаний о черт на всех, но, посмотрев на новых примерах PHP 5.4 признака, они, кажется, только помочь в одном случае. A class only be extended once to use $this together, but we can use multiple traits.
Вопрос 1: Это единственное преимущество использования черт над базовыми классами?
Вопрос 2: Если trait A, B, and C
все есть функция с именем example()
, когда я пытаюсь $this->example();
как PHP собирается определить, какие черты будут использоваться? Что должно случиться?
Кроме того, вместо написания стены текста; просто представьте мне пример короткого кода с кратким сообщением, который я могу посмотреть и взять на себя. Я не знаком с чертами и не знаю, что они на самом деле.
Я не верю, что черты сопоставимы с классами. Я думаю, что черты сходны с интерфейсами, как указано здесь http://stackoverflow.com/questions/9495408/what-are-possible-use-scenarios-for-traits-in-php – user1477388
Черты являются многократно используемыми фрагментами кода, которые могут быть смешивается с классами, не требуя, чтобы класс «расширил» некоторый другой класс. Это может быть полезно для уменьшения дублирования кода в независимых, но похожих классах. – deceze