Здравствуйте. Хочу иметь одну глобальную переменную, чтобы была возможность работать и в контроллере, и в отображении, и в модели. Есть код:
namespace CORE{
class Registry{
private static $data = array();
function __set($key,$value){
self::$data[$key] = $value;
}
function __get($key){
return self::$data[$key];
}
function __construct(){
}
}
}
Сделав объявление в любом скрипте:
use CORE\Registry;
$registry = new Registry();
Могу использовать:
$registry->name = 1;
echo $registry->name;
Но при этом получается, что каждый раз я создаю новый объект, хоть и массив $data и остается неизменным. Насколько это плохо? Думал сделать класс абстрактным, чтобы не создавать новый объект, но тогда методы __set и __get использовать не получится, и тогда придется использовать конструкции вида:
Registry::set($key,$val);
Что не очень удобно по сравнению с:
$date->name;
Какой вариант предпочтительнее? Страшно ли объявление как в первом варианте? Или как лучше поступить?