Codeigniterのいくつかのコアファイルを調べているところ、オブジェクトに挿入するのではなく、コアクラスのどこかにconfigクラスのインスタンスを取得するなど、プロシージャル関数と呼ばれるものがいたるところに散在していることがわかります。ただします
$config =& get_config();
私は専門家ではありませんが、それは悪いことではありませんか?私には、アプリケーションに不要なグローバル状態を持たせるように思えます。
私が見る限り、それは次のようなことをするのとほぼ同じです
$config = App::loadClass('config');
それを最初の方法よりも2番目の方法で悪いですか?App
これは、クラスが存在する(そして配置される)必要がある2番目の方法で呼び出す場合、特定のクラスが存在する必要がなく、クラスファイルを含める必要がないため、要件が少ないため、最初の方法で呼び出す場合があるためだと思います。
私は独自のフレームワークを作成しており、これまで静的なものの使用を避けてきましたが、主要なフレームワークのコードを調べてアイデアを探したり、静的なものをあちこちで見たりするのを手伝うと、なぜだろうか?
主要なフレームワークはもう少しうまくコーディングされると思いますか、あるいはグローバルなメソッドを使用することは、多くの人がそれらをあなたが思うものであると理解するほど有害ではないと思いますか?
私のフレームワークでは、この$config
オブジェクトを多くのクラスとオブジェクトに$logger
注入する必要があり$messages/$language
ます。私は依存性注入コンテナとファクトリを使用していますが、それでも実行するだけに比べて少し苦痛です
$config = App::loadClass('config');
$someSetting = $config->setting('some.setting');
Logger::write('debug', 'some message');
静的メソッドを使用する場合は、手続き型メソッド(Codeigniterの例)またはクラスに埋め込まれたメソッドを使用する必要がありますか?または、絶対に使用しないことを強くお勧めしますか?
ご意見をいただければ幸いです。