Array и Object - это два разных типа данных в PHP.Для доступа к переменным массива нам нужно использовать квадратные скобки [] .Например,
$a = array('one','two','three');
$a[] = "four";
echo $a[3]; //Output: four.
Но для доступа к переменным объекта
$a = new {className}();
$a->key = 'value'; //Using magic method __get()
echo $a->key; //Output: value
В терминах класса $ this относится к объекту этого конкретного класса.Таким образом, вы не можете назначить переменную используя [] квадратные скобки.Для этого вам нужно использовать стрелку -> .
Внутри класса вам нужно переписать свою функцию, как показано ниже:
public function __get($key) {
return $this->$key ?: false;
}
public function __set($key,$value) {
$this->$key = $value;
}
Или же вы можете создатьновая переменная массива внутри класса, как показано ниже
class className {
public $a = array();
public function __get($key) {
return $this->a[$key] ?: false;
}
public function __set($key,$value) {
return $this->a[$key] = $value;
}
}