ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルで開発した MVC モデルを正しく理解する

PHP_PHP チュートリアルで開発した MVC モデルを正しく理解する

WBOY
WBOYオリジナル
2016-07-15 13:33:02916ブラウズ

MVC を使用すると、プログラムに多くのデータベース操作が追加され、パフォーマンスの低下が発生し、これには本当に驚きました。 MVC は単なるフレームワークであり、データベース操作とは何の関係もありません。 MVC は明確なプログラミング開発モデルを提供するだけであり、それを適切に扱う限り、多くの不必要なデータベース操作を実行することは不可能です。 MVC により、プログラマが知らないうちにさらに多くのデータベース操作を実行できるようになる場合、それは明らかに優れた MVC アーキテクチャとは言えません。 MVC は単純な開発フレームワークを提供するだけでよく、多くのライブラリ クラスを統合する必要はなく、プログラマがライブラリ クラスを使用することを選択するのが最善だと思います。

私個人としては、MVC の理論を詳しく勉強したことはありませんが、モデルはデータベースのカプセル化であり、モデル メソッドを呼び出すことで、対応するデータを取得できますが、プログラマは実装の詳細を気にする必要はありません。実際の開発では、データベースのテーブルがモデルに相当することが多いでしょう。

たとえば、ユーザー情報テーブル userinfo はモデル ユーザーに対応し、モデル ユーザーの add() メソッドを呼び出すことでデータベースにデータを追加し、select() を通じてクエリを実装できます。アップデートを通じて更新することができます。同時に、モデルは、mysql、oracle、SQL サーバーのいずれを使用するかにかかわらず、特定のデータベースの種類に依存しない必要があります。

同時に、WEB開発でRORを使用することはお勧めしません。複雑な複数テーブルのクエリにはSQL言語を使用するのが非常に便利で高速であり、パフォーマンスも優れています。 SQL の知識さえないプログラマーは、資格のあるプログラマーとは言えないと思います。したがって、直接 SQL クエリを実装するためのクエリ メソッドをモデルに提供します。

以下は、PHP で MVC モデルを開発したおおよその結果です。これは完全なコードではありません。完全なコードについてはデモ パッケージを参照してください。

<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> ?   </span></span></li><li><span>class module{   </span></li><li class="alt"><span>var $mysql;//数据库操作类,<br />可以是mysql,oracle,sql等等   </span></li><li><span>var $tbname;//模型对应的表名称   </span></li><li class="alt"><span>var $</span><span class="attribute">debug</span><span>=</span><span class="attribute-value">false</span><span>;//是否是调试模式   </span></li><li><span>function module($tbname,$</span><span class="attribute">db</span><span>=</span><span class="attribute-value">''</span><span>){}<br />//构造函数   </span></li><li class="alt"><span>function _setDebug($</span><span class="attribute">debug</span><span>=</span><span class="attribute-value">true</span><span>){}</span></li><li class="alt"><span>//开启或者关闭调试模式   </span></li><li><span>function add($row,$</span><span class="attribute">tbname</span><span>=</span><span class="attribute-value">''</span><span>){}</span></li><li><span>//新增加一条记录   </span></li><li class="alt"><span>function query($strsql){}//直接查询sql语句   </span></li><li><span>function count($</span><span class="attribute">where</span><span>=</span><span class="attribute-value">''</span><span>,$</span><span class="attribute">tbname</span><span>=</span><span class="attribute-value">''</span><span>){ }</span></li><li><span>//计数统计   </span></li><li class="alt"><span>function select($</span><span class="attribute">where</span><span>=</span><span class="attribute-value">''</span><span>,$</span><span class="attribute">tbname</span><span>=</span><span class="attribute-value">''</span><span>){}</span></li><li class="alt"><span>//查询   </span></li><li><span>function delete($</span><span class="attribute">where</span><span>=</span><span class="attribute-value">''</span><span>,$</span><span class="attribute">tbname</span><span>=</span><span class="attribute-value">''</span><span>){}</span></li><li><span>//删除满足条件的一个记录   </span></li><li class="alt"><span>function update($set,$where,$</span><span class="attribute">tbname</span><span>=</span><span class="attribute-value">''</span><span>){}</span></li><li class="alt"><span>//更新指定记录   </span></li><li><span>function detail($where,$</span><span class="attribute">tbname</span><span>=</span><span class="attribute-value">''</span><span>){}</span></li><li><span>//详细显示一条记录   </span></li><li class="alt"><span>}   </span></li><li><span class="tag">?></span><span>  </span></span></li></ol>

このモデルでは、配列とデータベース フィールドを使用して対応させます。初期の PHPBEAN では、オブジェクトを使用して対応していました。しかし後になって、PHP で MVC モデルを開発するこの方法は PHP では良くなく、不要なクラスが大量に追加されていると感じました。配列を使用する方が便利で優れています (PHP の配列は確かに優れており、JAVA よりもはるかに優れています)。

以下のデモでは、デモンストレーションに mysql データベースを使用し、データベース操作クラスを元のライブラリ クラスの 1 つから変更しました。

以下では、デモの使用方法を詳しく説明します。 ^_^

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><</span><span> ?   </span></span></li><li><span>require_once(SITE_PATH.'/<br />libs/phpbean.class.php');   </span></li><li class="alt"><span>require_once(SITE_PATH.'/<br />libs/mysql.class.php');   </span></li><li><span>$</span><span class="attribute">phpbean</span><span>=</span><span class="attribute-value">new</span><span> phpbean();   </span></li><li class="alt"><span>global $phpbean;   </span></li><li><span>$</span><span class="attribute">mysql</span><span>=</span><span class="attribute-value">new</span><span> mysql("localhost"<br />,"****","****","52site");   </span></li><li class="alt"><span>$phpbean-</span><span class="tag">></span><span>register('db',$mysql);   </span></span></li>
<li><span>unset($mysql);   </span></li>
<li class="alt">
<span class="tag">?></span><span>  </span>
</li>
</ol>
を元のパッケージのindex.phpに追加します。このPHP開発MVCモデルのコードは、主にレジストラを使用する原理については、私の翻訳を参照してください。

次に、次のコードで新しい mysqlController.class.php ファイルを作成します:

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><</span><span> ?   </span></span></li><li><span>/**   </span></li><li class="alt"><span>* MVC演示demo   </span></li><li><span>* 仅仅实现最基本的MVC功能,不包含安全处理<br />,数据过滤,及其他优化措施。   </span></li><li class="alt"><span>* @author:feifengxlq   </span></li><li><span>* @since:2007-1-24   </span></li><li class="alt"><span>* @copyright http://www.phpobject.net/blog/   </span></li><li><span>*/   </span></li><li class="alt"><span>class mysqlController   </span></li><li><span>{   </span></li><li class="alt"><span>var $module;   </span></li><li><span>function mysqlController(){   </span></li><li class="alt"><span>require_once(SITE_PATH.'/libs/module.class.php');   </span></li><li><span>$this-</span><span class="tag">></span><span class="attribute">module</span><span>=</span><span class="attribute-value">new</span><span> module('52site_siteinfo');<br>//52site_siteinfo为表名称   </span></span></li>
<li class="alt">
<span>$this-</span><span class="tag">></span><span>module-</span><span class="tag">></span><span>query("set names 'gb2312'");<br>//如果是MYSQL5请加上这句   </span>
</li>
<li><span>}   </span></li>
<li class="alt"><span>function indexAction(){   </span></li>
<li>
<span>print_r($this-</span><span class="tag">></span><span>module-</span><span class="tag">></span><span>select());//这样实现了读取数据   </span>
</li>
<li class="alt"><span>}   </span></li>
<li><span>}   </span></li>
<li class="alt">
<span class="tag">?></span><span>  </span>
</li>
</ol>
上記は、まずコントローラーのコンストラクターにモデルを追加します。次に、indexAction のモデル メソッドを呼び出してデータを表示します。これは最も単純なクエリ リストを実装します。

将来的には、クエリ、更新、追加、ページング リスト、マルチテーブル クエリなど、MVC モデルの他のメソッドを開発するために PHP を使用する方法を説明する具体的なデモを作成する予定です。


http://www.bkjia.com/PHPjc/446086.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446086.html技術記事 MVC を使用すると、プログラムに多くのデータベース操作が追加されるため、パフォーマンスが低下します。 MVC は単なるフレームワークであり、データベース操作とは何の関係もありません。 MVC が提供するのは...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。