Если вы хотите возиться с классом, не добавляя геттеры и сеттеры ....
PHP 7 добавляет метод вызова ($ obj) (быстрее старого bindTo) на закрытие, позволяя вам вызвать так что переменная $this
будет действовать так же, как и в классе - с полными разрешениями.
//test class with restricted properties
class test{
protected $bar="protected bar";
private $foo="private foo";
public function printProperties(){
echo $this->bar."::".$this->foo;
}
}
$testInstance=new test();
//we can change or read the restricted properties by doing this...
$change=function(){
$this->bar="I changed bar";
$this->foo="I changed foo";
};
$change->call($testInstance);
$testInstance->printProperties();
//outputs I changed bar::I changed foo in php 7.0
Это не вызвано опцией конфигурации. И я почти уверен, что это не связано с PHP 7, но мне нужно мнение других по этому поводу.
Суть в том, что вы никогда не должны использовать неинициализированную переменную и рассчитывать на неинициализированное значение как часть вашей бизнес-логики. Укажите значение по умолчанию для $ a.