これは、背後にある本当の問題との質問、ちょうど私の病気の心の製品やだから、私はこのPHPアプリケーションが上に構築してい:)PHP:コード設計のジレンマ
少し奇妙なものを作るために車で私の独自のMVC指向のフレームワーク(はい、私は自分の代わりに既存のフレームワークを使用しました)。そして、モデル(データとデータベースの操作)、ビュー(データとレンダリングの出力で満たされたテンプレート)、コントローラ(要求の処理、モデルからの適切なデータの取得、データの表示) .htaccessルールで要求ルーティングが行われる、古典的で退屈なシナリオ。
昨日、コード、バグ修正、カップルの改良などでいくつかの変更を加えました。そして、私はコントローラのコードを並べ替えるよう強く感じました。彼らは幾分重くて肥大しており、メソッドの数はファイルやそのようなものをナビゲートするのが難しくなります。みんなが私のことを知っていると確信しています。
私は、コントローラクラスを多くのクラスに分割することを考えています。それぞれのクラスは、loginやregister、showProfile、killMeといった1つのタイプのリクエストしか処理しません。
コントローラクラスには、ユーザーフレンドリーな(または多分SEOフレンドリーな)URLの部分に対応するパブリックメソッドがあり、ルーティングクラスは適切なコントローラを呼び出し、URLコンテンツに従ってメソッドを呼び出します。
変更私は、特定のコントローラを呼び出すために少しのルーティングメカニズムをシフトすると考えています。それはExecute()メソッドです。例えば
は、URLの= "www.example.com/users/login" 、今ではそのようになっています
$controller = new url[0]();
$method = url[1];
echo $controller->$method();
、今URLが "www.example.com/login" に変更しますおよびルーティングコードは、次のようになります。
$controller = new url[0]();
controller->Execute();
は私がURLを解析し、それは私の質問には無関係であるとして、そこから情報をルーティング抽出部品を省略しました。
私はその変更にどのようなメリットがありますか? 1つの要求
- つの専用クラス
短所?
- おそらくクラス
- のパフォーマンスの多くは
- を打ちます?
私の質問は、そのアイデアについてどう思いますか、それはまったく意味がありますか?そして、もちろん私はなぜ私がそれをしなければならない理由にもっと興味があるのですか?あなたはそれはひどいアイデアや醜態だろう、なぜ任意の理由を考えることができるならば、それは:)手遅れ
になります前に、ここで話してくださいEDITED 質問の明確化:
私は私かどうかを聞いていますのよ私の単一の大きなコントローラを破壊する必要があります。このコントローラは、多くの種類の要求を単一のタイプの要求のみを処理する多数の小さなコントローラに分割して処理します。
"login"、 "showLoginForm"、 "register"、 "activate"などのリクエストを処理するコントローラユーザがいます。リファクタリングされたコードは、これらのリクエストごとに別々のコントローラで構成されます。
[FrontController](http://martinfowler.com/eaaCatalog/frontController.html)が[トランザクションスクリプト](http://martinfowler.com/eaaCatalog/transactionScript.html)を呼び出すべきかどうか、または[PageController](http://martinfowler.com/eaaCatalog/pageController.html)または別のもの?私はあなたが探しているものをまったく入手しません。 – Gordon
私は何についておっしゃっているいくつかの説明を追加しました:) – grapkulec