写一些PHP。经过一番调试我减少了我美好的行为,该代码:不能访问受保护的特性
trait T1 {
function a1() { return $this->var; }
}
trait T2 {
use T1;
function a2() { return T1::a1(); }
}
class A {
use T2;
protected $var = 3;
}
$a = new A;
echo $a->a2();
此代码A类,只要是$ var被定义为公共;因为我想有保护(这只是为了好看)我绊了一个错误致命错误:无法访问受保护的财产B :: $ VAR在...上线5
为什么这种情况发生在这种情况下, ? T1 :: a1是否将范围更改为“课外”?
“我想要保护(只是为了使它很好)”大声笑! – foxygen 2014-10-29 19:48:37
如果你在'T2'的'a2()'中返回$ this-> a1();'''相同的结果? – Rudie 2014-10-29 19:49:41
对不起,你在这里构建'$ b'的代码? (或者修复你的代码,使之成为$ a,我假设你打算这样做,或者引入$ b的声明和初始化) – 2014-10-29 19:49:42