php – 在课堂上使用特征,为什么?

这是课程的方式吗?

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;
    }
}

另一个有趣的用途是面向方面编程.
答案是长期解释.看看herehere.

问题2:如果特征具有相同的方法,则会出现致命错误.
您必须使用insteadof运算符来解决冲突.
here

上一篇:c# – Visual Studio 2017测试资源管理器特征发现:显示超过TestCategory()


下一篇:具有相同名称的Php Class&Trait方法