Он использует взломанный PHP на перегрузке свойства , чтобы добавлять записи и извлекать записи из частного $vars
массива.
Чтобы добавить свойство, вы должны использовать ...
$registry = new Registry;
$registry->foo = "foo";
Внутренне это добавит ключ foo
к массиву $vars
со строковым значением "foo" с помощью магического метода __set
.
Чтобы получить значение ...
$foo = $registry->foo;
Внутренне это приведет к извлечению записи foo
из массива $vars
с помощью магического метода __get
.
Метод __get
действительно должен проверять наличие-существующие записи и обрабатывать такие вещи.Код как есть вызовет ошибку E_NOTICE
для неопределенного индекса.
Лучшей версией может быть
public function __get($key)
{
if (array_key_exists($key, $this->vars)) {
return $this->vars[$key];
}
// key does not exist, either return a default
return null;
// or throw an exception
throw new OutOfBoundsException($key);
}