Я хочу использовать реестр для хранения некоторых объектов. Вот простая реализация класса реестра.
<?php
final class Registry
{
private $_registry;
private static $_instance;
private function __construct()
{
$this->_registry = array();
}
public function __get($key)
{
return
(isset($this->_registry[$key]) == true) ?
$this->_registry[$key] :
null;
}
public function __set($key, $value)
{
$this->_registry[$key] = $value;
}
public function __isset($key)
{
return isset($this->_registry[$key]);
}
public static function getInstance()
{
if (self::$_instance == null) self::$_instance = new self();
return self::$_instance;
}
}
?>
Когда я пытаюсь получить доступ к этому классу, я получаю уведомление "Непрямая модификация перегруженного свойства без эффекта".
Registry::getInstance()->foo = array(1, 2, 3); // Works
Registry::getInstance()->foo[] = 4; // Does not work
Что я делаю неправильно?