加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:15:34 所属栏目: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());
这是课程的方式吗?

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读