这是课程的方式吗?
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特性示例,它们似乎只对单个案例有所帮助.一个类只能扩展一次以使用$this,但我们可以使用多个特征.
问题1:使用特征而不是基本类是否是唯一的优势?
问题2:如果特征A,B和C都有一个名为example()的函数,当我尝试$this-> example(); PHP将如何确定将使用哪个特征?会发生什么事?
此外,而不是写一面文字;只是给我一个简短的代码示例,简短的简介,我可以看看和承担.我不熟悉特质,也不知道它们到底是什么.
解决方法:
你可以用特质做很多事情.我在我的框架中使用它,例如Singleton和Getter / Setter.
trait Singleton
{
protected static $_instance;
protected function __construct(){}
public static function getInstance()
{
if (null === self::$_instance) {
self::$_instance = new static();
}
return self::$_instance;
}
}
另一个有趣的用途是面向方面编程.
答案是长期解释.看看here和here.
问题2:如果特征具有相同的方法,则会出现致命错误.
您必须使用insteadof运算符来解决冲突.
看here