2

この記事「フロントコントローラーの実装方法」に出くわしました。この記事は、コントローラーをロードするためのより良い方法は、コントローラーをapacheに任せることであると示唆しています。これは、コントローラーが設計された目的であるためです。

だから私はいくつか質問があります...

  1. コントローラーへのリクエストのルーティングにphpを使用する代わりに、.htaccessを使用することは実行可能な代替手段ですか?
  2. どちらの方法がより良く、より速く、モジュール式でポータブルですか?
  3. 誰かが実際にこの方法でMVCフレームワークを実装しましたか?もしそうなら、何かヒントがありますか?

  4. このテクニックについて議論しているウェブサイトを知っている人はいますか(グーグルで何も見つかりませんでした)?
4

2 に答える 2

4

その記事で単一のエントリポイントを使用することに対する主な反対意見は次のようです。

...何百ものページコントローラがある場合はどうですか?最終的には、大規模なスイッチステートメント、または配列やXMLドキュメントなどで偽装されたものになります。PHPは、ページリクエストごとに、ユーザーが実行しようとしている現在のリクエストとは関係のない大量のデータをリロードする必要があります。

それは非常に弱い議論です。まず、それはルーティングメカニズムを実装するためのひどい方法です。次に、これが測定可能な効果を得るには、アプリケーションがかなり複雑である必要があります。アプリケーションがこのように複雑である場合、エントリポイントでのパフォーマンスの低下は、アプリケーションの他の部分の実行と比較して最小限である可能性があります。

そして、考えてみてください。複雑なWebアプリのフロントエンドを処理するためのPHPスクリプトを維持するのが難しい場合は、同等の.htaccessファイルがどのようになるか想像してみてください。

最後に、バイトコードキャッシュの問題を回避して、リクエストごとにスクリプトをロードするという「問題」を解決できます。

于 2012-04-28T04:02:16.530 に答える
2

ビールかもしれませんが、その記事は私にはほとんど意味がなく、引用符で囲まれた多くの「単語」も含まれています。私はそこで言及されているいくつかのことに同意しません。それは言う...that this approach to implementing a Front Controller in PHP does alot (sic) to raise the learning curve required to become fluent with the framework。確かにそれは本当だと思いますが、強力で柔軟性があり、大規模なシステムがあれば、少しの学習は必要ありません。

あなたの質問に関して:

  1. .htaccessPHPを使用する代わりにいくらか実行可能な方法かもしれませんが、拡張性がはるかに低く、複雑になり、迅速に管理するのが困難になります。Apache、lighttpd、nginxでこのようなURL構成を行うことができます。私はそれが時々行われるのを見てきましたが、この方法で行うことは大きな学習曲線になるでしょう。

    PHPを使用してルーティングを行うと、構成ファイルや配列からルート情報を取得したり、オブジェクトを介して挿入したりすることができます。これにより、柔軟性が高まり、多くの要因に応じてルートを含めたり除外したりすることができます。

  2. サーバー構成ファイルを使用してURLルーティングを構成する方が多少速い場合がありますが、違いはわずかです。サーバー構成はモジュール化がはるかに少なく、異なるHTTPサーバー間で移植できません。母国語のフロントコントローラーは、どのサーバープラットフォームでも機能します。

  3. それを行うMVCフレームワークは見たことがありませんが、PHP以外の多くの調査は行っていません。

  4. これも仕方がない。

個人的には、PHPではZendFrameworkをよく使用します。1つのスクリプトを介してすべてをルーティングするフロントコントローラーパターンを使用します。この方法には制限はありません。必要以上のものをすべて提供します。

それらは私の考えです、それが役立つことを願っています。

于 2012-04-28T04:07:43.983 に答える