gpt4 book ai didi

php - 在类上使用特征,为什么?

转载 作者:可可西里 更新时间:2023-10-31 23:06:57 25 4
gpt4 key购买 nike

类是怎么做的?

Class Main 
{
$this->a = new A();
$this->b = new B();
$this->c = new C();

$this->b->doTranslate($this->a->saySomething());
}

这就是 traits 的工作方式,不是吗?

Class Main {
use A;
use B;
use C;

$this->doTranslate($this->saySomething());
}

我对 traits 了解不多,但通过查看新的 PHP 5.4 trait 示例,它们似乎只在一个案例中有所帮助。 一个类只能扩展一次以一起使用 $this,但我们可以使用多个特征。

问题 1:这是使用 trait 相对于基本类的唯一优势吗?

问题 2: 如果 trait 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:如果traits有相同的方法比就会出现 fatal error 。您必须使用 insteadof 运算符来解决冲突。看here

关于php - 在类上使用特征,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com