Мне интересно, какой семантически и технически самый оптимальный из моих вариантов здесь.Я создал простой класс реестра объектов, но метод доступа к объектам заставляет меня задуматься, что лучше.В настоящее время я использую первый вариант:
//the Registry methods can chain, each returning a self reference
$registry = Registry::getInstance()->register('myObject', new Object);
//accessing a registered object method
//in various possible ways
Registry::getInstance()->myObject->method(); //1
Registry::getInstance()->use('myObject')->method(); //2
$registry('myObject')->method(); //3
- Первый вариант использует магию
__get()
в соответствии с синтаксисом беглости. - Второй использует 'getter 'method
use()
. - Третий использует
__invoke()
магию, которая была предложена, но я не слишком люблю.
Я простоЛюбопытно узнать, есть ли у кого-нибудь понимание или предложения по использованию какого-либо (или ни одного) из этих вариантов.Причина использования класса Registry в моем случае состоит в том, чтобы обеспечить псевдоглобализацию ключевых объектов для использования во вложенных замыканиях (объявление их с помощью use
каждый раз является громоздким)
Это в некоторой степени связано с другимвопрос, на закрытие PHP и неявная область видимости глобальной переменной
Заранее спасибо:)