trait A
{
function __get($name)
{
}
}
trait B
{
function __get($name)
{
}
}
trait C
{
function __get($name)
{
}
}
class D
{
use A, B, C;
function __get($name)
{
// it may also have magic method
}
}
我想调用所有4种__get()
方法,这是可行的吗?我看到我可以重命名方法,但它更像是从A,B,C中选择一种方法,但我需要所有方法
答案 0 :(得分:1)
如果不重命名导入的__get
方法,则无法实现。
请参阅有关此问题的PHP文档:PHP: Traits - Conflict Resolution
class D
{
use A, B, C {
A::__get as private __getA;
B::__get as private __getB;
C::__get as private __getC;
}
function __get($name)
{
$this->__getA($name);
$this->__getB($name);
$this->__getC($name);
}
}
(我已将该类重命名为 D ,因为您无法在一个命名空间中拥有特征和类名。)