ホームページ > php教程 > php手册 > PHP:MVC の神話

PHP:MVC の神話

WBOY
リリース: 2016-06-21 09:14:45
オリジナル
775 人が閲覧しました

最近デザイン パターンが普及し、MVC があらゆるところで見られ、PHP 分野でも例外ではありません。PHP での MVC の使用について議論され始めています。しかし、PHP では M、V、C をどのように実装すればよいでしょうか? MVC は本当に PHP に適しているのでしょうか?ここで Easy は独自の考えをいくつか述べています。


MVC プロトタイプ

MVC はもともとデスクトップ プログラムに存在していました。M はデータ モデルを指し、V はユーザー インターフェイスを指し、C はコントローラーを指します。 MVC を使用する目的は、M と V の実装コードを分離し、同じプログラムで異なる表現を使用できるようにすることです。たとえば、統計データのバッチをそれぞれ棒グラフと円グラフで表すことができます。 C の目的は、M と V の同期を確保することです。M が変更されると、V も同期して更新される必要があります。


MVC in JAVA

JAVAはWeb分野にMVCを導入し、これをベースにModel2と呼ばれるシステムが構築されました。 Web の特殊性により、JAVA の MVC とデスクトップの MVC はまったく同じではありません。主な理由は、Web の V は永続的ではなく、ユーザーがアクセスするたびに V を再生成する必要があるため、V は常に M と一致しており、C が同期を制御する必要がないためです。では、JAVA の C は何をしているのでしょうか? JAVA の C は通常、プロセス ステアリングに使用されますが、実際に使用されるのは Dispatch モードであり、Desktop の C ではありません。



PHP の MVC

PHP で JAVA の MVC をそのままコピーすることは不可能です。この問題は主に M に現れます。JAVA では、M はビジネス ロジックやプレゼンテーション ロジックから独立したデータ モデルであり、JAVA Bean がこの役割を果たします。 PHP プロセスはメモリ内に長期間常駐しません。PHP ページの実行が開始されたときにのみ作成され、ページの解釈と実行が終了したときに終了します。このような場合、M を直接実装することはできません。したがって、MVC パターンを実装すると主張するすべての PHP プログラムは、シミュレーションを通じてのみ M を実装できます。実装方法は通常、現在のページの終了前にデータベースまたは Cookie/セッションにデータを保存し、次のページでデータベースまたは Cookie/セッションを通じて M を再構築します。 JAVA の Bean と比較すると、この方法は非常にコストがかかると言えます。メモリにデータを書き込むという元の単純な操作は、サーバーからクライアントまたはデータベースに転送し、再度戻す必要があります。データ モデルを維持するためにこのような大きなオーバーヘッドを使用し、最後にそのモデルをデータベースに戻すよりも、必要に応じてデータベース内のデータを直接更新する方が良いでしょう。

これで、PHP の MVC アーキテクチャは次の図で表すことができます。





それでは、Vを見てみましょう。現在、多くの PHP プログラムは単に何らかのテンプレート技術を使用し、説明に「MVC アーキテクチャの採用」と書いています。実際、大多数の PHP テンプレート プログラムは、MVC が重視する表示ロジックとビジネス ロジックの分離ではなく、HTML と PHP を分離しているだけです。 HTML と PHP が混在するページも MVC の一部にすることができます。表示ロジックとビジネスロジックを分離する方法については、まだ満足のいく解決策がありません。個人的には、http://www.phpe.net/articles/384.shtml の実装計画に同意します。 C に関しては、JAVA に似ており、現在でもステアリングに使用されています。これは、PHP では実際には重要ではありません。


非常にリソースを消費する M + 少し異なる V + 必須の C は、PHP のいわゆる MVC を構成します。

上記の分析に基づいて、Easy は PHP 本来の 3 層アーキテクチャがいわゆる MVC よりも効率的であり、3 層アーキテクチャのプレゼンテーション層が解決する必要がある問題は MVC にも存在すると考えています。改良された 3 層アーキテクチャは、MVC よりも PHP に適しています。

追記: 一部のソリューションは M にビジネス ロジックを組み込んでいます (http://www.phpe.net/articles/382.shtml)。これは実際には MVC の考え方に反しています。

さらに関連するディスカッションについては、ディスカッションエリアにアクセスしてください: http://club.phpe.net/index.php?act=ST&f=15&t=4720



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート