フレームワークが適切で真実であるかどうかを確認するのに役立つ可能性のあるいくつかの質問があります。
「フレームワークなしでMVCクラスの単体テストを実行できますか?」
そして、これはユニットテストを書かなくても当てはまります。
フレームワークから独立してMVC関連のコードを記述できるはずです。アプリケーションがフレームワークから何らかの入力を受け取る場合、それは既知のインターフェースを持つオブジェクトである必要があり、具体的なクラスではありません。
本当のMVCフレームワークは、アーキテクチャ自体に影響を与えない(または非常に制限される)ということです。せいぜい、それはアプリケーション呼び出しがMVCトライアドに到達するための明確で簡単な方法を提供するだけです。そして多分あなたに便利さを提供します..制限や制約ではありません。
「それは魔法と妖精のほこりで動くのですか?」
フレームワークによって提供されたすべてのクラスを拡張できるはずです。また、実装する必要のある機能を簡単に理解できる必要があります。
「何かが起こった」場合、これを行うのは非常に困難になります。これは通常、フレームワークのコードのグローバル状態を指します。静的メソッドまたはグローバル/静的変数のいずれかの形式。
「どの時点で私のコードが始まりますか?」
コントローラがどこでどのように実行されるかを見つけることができますか?通常、それはそれほど簡単ではありません。その神秘的なポイントは通常、オブジェクトグラフの奥深くにあります。時には拡張クラスでも。
このような状況では、コントローラーが実行された環境を変更するのが非常に困難になります。また、コントローラーメソッドがどのように見えるかについての厳密なルールを課します。
これはすべて、真のMVCフレームワークでは、オプションを制限するのではなく、開発プロセスを強化する必要があるという点に戻ります。
「彼/彼女はこれをすることができるはずでしたか?」
承認の認証は開発の別の側面のように見えるかもしれませんが、実際には、MVCのコンテキストでは、それはややトリッキーになる傾向があります。
多くのフレームワークには、いくつかの認証/承認インフラストラクチャがあります。これは反復的な作業であり、私たち全員がそれを死に至らしめたので、フレームワークが提供できる機能の良い候補です。
しかし、ここにキッカーがあります。それらのほとんどは、コントローラー内に認証を入れようとし、それをどのように調整できるかについて非常に慎重です。これは別の制限です。
これは結局のところこれです。どのフレームワークでも、ログイン機能を追加するためだけにすべてのコントローラーを書き直す必要はありません。OCPの違反を無視したとしても、これはあなたが誤って何かを忘れてしまうという別のリスクを追加するだけです。
..私の2セント