私は小さなフレームワークで作業しています。その主なオブジェクトは、子 (コントローラー、モデル、ビュー) で使用できます。
mainobject::instance()
フレームワークのWikiは、目的のコントローラーメソッドを追加することを推奨しています
$mainobject = mainobject::instance()
そのため、単一変数を介してモデルで使用できるようになりました。たとえば、グローバル構成変数を取得するために、すべての単一モデルのメソッドでその変数を定義するために、これが本当に便利かどうかは疑問です。
class MyAnotherModel extends FrameworksModel
{
…
my_method() {
global $mainobject;
…
if ($mainobject->config['something_here'];
$mainobject->controller->othermodel->othermodelsarray['somestring'];
}
}
とにかく、これは巨大な文字列であり、毎回 2 つの文字列を書き込むよりも、インスタンスを呼び出して少し大きくすることをお勧めします。つまり、書く
mainobject::instance->config['goods']
mainobject::instance->controller->othermodel->othermodelsmethodgiveme('power');
しかし、コントローラークラスはインスタンスを変数として呼び出すことを提供していないため、実装できるかどうかはわかりません。ゲッターメソッドなら可能かもしれませんが・・・そんな方法があれば。では、元の mainobject クラスを書き直さずに何ができるでしょうか?
inb4 の長い文字列は入力するのに不便です — emacs で略語を使用してタイピング フレーズを短くできるので問題はありません。