Php,traits 中的链式调用碰撞(魔法)方法,如何?
Php, chain-calling collision (magic) methods in traits, how to?
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 中选择一个方法,但我需要所有方法
不重命名导入的 __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);
}
}
(我已将 class 重命名为 D,因为您不能在同一个命名空间中拥有同名的特征和 class。)
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 中选择一个方法,但我需要所有方法
不重命名导入的 __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);
}
}
(我已将 class 重命名为 D,因为您不能在同一个命名空间中拥有同名的特征和 class。)