ここでの私の選択の中で、意味的および技術的に最も最適なものはどれか疑問に思います。単純なオブジェクトレジストリクラスを作成しましたが、オブジェクトアクセスのメソッドでは、何が最適か疑問に思います。私は現在最初のバリエーションを使用しています:
//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()
、流暢な構文を維持しながら、魔法を使用します。 - 2番目は' getter 'メソッドを使用し
use()
ます。 - 3つ目は
__invoke()
、提案されている魔法を使用しますが、私はあまり好きではありません。
誰かがこれらのオプションのいずれか(またはまったく)を使用することについての洞察または提案を持っているかどうかを知りたいだけです。私の場合、Registryクラスを使用する理由は、ネストされたクロージャで使用するために、キーオブジェクトの疑似グローバリゼーションを提供するためです(use
毎回宣言するのは面倒です)
これは、 PHPクロージャと暗黙のグローバル変数スコープで、私の他の質問にいくらか関連しています。
前もって感謝します :)