我想知道我在这里的选择在语义和技术上是最优化的。我创建了一个简单的对象注册表类,但对象访问的方法让我想知道什么是最好的。我目前正在使用第一个变体:
//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 '方法
use()
。 - 第三个使用
__invoke()
魔法,有人建议过,但我不太喜欢。
我只是想知道是否有人对使用这些选项中的任何一个(或没有)有见解或建议。在我的例子中使用 Registry 类的原因是提供关键对象的伪全球化,用于嵌套闭包(use
每次都声明它们很麻烦)
这与我的另一个问题有些相关,在PHP 闭包和隐式全局变量范围
提前致谢 :)