Написание некоторых 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();
Этот код работает до тех пор, $ вар в классе А определяется как общественность; как я хочу, чтобы это защищалось (просто чтобы это было приятно) Я наткнулся на ошибку Неустранимая ошибка: не удается получить доступ к защищенному свойству B :: $ var in ... в строке 5
Почему это происходит в этом случае ? Изменяет ли T1 :: a1 область видимости «вне класса»?
«Я хочу, чтобы это защищалось (просто чтобы было приятно)» lol! – foxygen
Тот же результат, если вы вернете $ this-> a1(); 'в' a2() 'в' T2'? – Rudie
Извините, где вы строите '$ b' в этом коде? (либо исправить свой код, чтобы сделать этот $ a, который, как я предполагаю, вы хотели сделать, или ввести объявление и инициализацию $ b) –