ホームページ >バックエンド開発 >PHPチュートリアル >【PHP】MVCフレームワークはなぜ難しい! 4年経ってやっと気づきました、ThinkPHPによって被害を受けていたのです!

【PHP】MVCフレームワークはなぜ難しい! 4年経ってやっと気づきました、ThinkPHPによって被害を受けていたのです!

WBOY
WBOYオリジナル
2016-06-13 11:59:422304ブラウズ

【PHP】MVCフレームワークはなぜ難しい! ! ! 4年経ってやっと気づきました、ThinkPHPによって被害を受けていたのです! !

この投稿はデフォルトで 2014-05-15 18:39:05 に最終編集されました7
この投稿は、ThinkPHP の名前付けに混乱している PHP プログラマー向けです~ (デフォルトでは 7#zbphp.com)


私のもの 4 年前 いくつかの投稿

投稿 1 「PHP の MVC の問題について他の人と議論する」 投稿者 http://bbs.csdn.net/topics/350216861
時刻: 2010 -12-10 22:38:53
実はこの投稿は ThinkPHP を使って作成したのですが、動作が非常に遅く、URL も一致しなかったので、最終的に MVC フレームワークを使用することを諦めました。

投稿 2 「MVC モデルが急に理解できたような気がします」 http://bbs.csdn.net/topics/390332774
公開日: 2012-12-29 16: 47:22
この記事の MVC の理解は間違っています。そのメソッドは MVC モードではなくファクトリー モードです。



PHP MVC は本当に拷問です! ! ! ~

MVCとはModel View Controllerの略で、プログラミング手法の一つです。しかし、私は PHP プログラマとして 5 ~ 6 年働いていますが、MVC フレームワークを使用したことがなく、MVC について常に混乱していました。国内の MVC フレームワークは基本的に ThinkPHP です。私は就職活動をしていたとき、MVC を知らず、ThinkPHP フレームワークを使用しなかったため、何度も壁にぶつかり、ますます混乱し、疑い、混乱し、落ち込んでしまいました。 。

今回、もう一度気を引き締めてマスタリングの考え方を理解し、ThinkPHP フレームワークの公式 Web サイトの情報を読み直しましたが、まだ理解できていないのが残念です。ここに該当する URL ですが、読めば読むほどめまいがしてきます。 MVC のことを話しているのではありませんか? なぜコントローラー クラスがないのですか? Action クラスが表示されるのはなぜですか? 「アクション」はあるのに、「Controller」がないのはなぜですか? 「URL パラメータ a」と「パラメータ m」があるのはなぜですか? 「パラメータ a」は「アクション クラス」を指しますか? 「パラメータ m」は「モデルクラス」 を参照していますか? ?


ThinkPHP はなぜ難しいのですか?
<br /><?php<br />//文件地址:D:\zbphp.com\www\Lib\Action\MemberAction.class.php<br />class MemberAction extends Action {<br /><br />    public function index(){<br />        $this->display();<br />    }<br /><br />    public function login(){<br />        $this->display();<br />    }<br /><br />    public function register(){<br />        $this->display();<br />    }<br />}<br />

ThinkPHP が誇るルーティング URL を見るたびに、気が遠くなりそうだ! Index.php?a=&m= のような URL を見ると、「パラメーター a の値」は「Action クラス」を参照し、「パラメーター m」は MVC のモデルを参照しているはずだと考えるでしょう。 (モデル)?

でも、何かが違う気がします。
Action はアクションを意味します。MVC は Model View Controller です。それでは、Controller クラスが表示されないのはなぜですか?よく見てみると、ThinkPHP では Action がコントローラーであることがわかりました (でも、なぜ Action という名前なのでしょうか?? なぜ単にコントローラーという名前にしないのでしょうか??)

まず、パラメーター m について説明します。それが Model クラスであることを理解しました。しかし、私はさらに奇妙に感じます。たとえば、index.php?a=index&m=content にアクセスする場合、この考え方に従ってアクセスするのは IndexAction クラスの content() メソッドですが、残念ながらそれは間違っています。彼がアクセスするのは、ContentAction クラスの Index() メソッドです。 。 。

この時点で、ThinkPHP フレームワークがなぜ非常に難しく複雑であるかが理解できるでしょう。重要な部分に非常に紛らわしい名前を付ける方法が使用されているからです

ThinkPHP は多くの害を引き起こしています

これを書いていると、本当に ThinkPHP が多くの害を引き起こしていると言わざるを得ません。名前のせいで、
1) クラスの URL パラメーター a とアクション、
2) クラスの URL パラメーター m とモデル、3) MVC フレームワークですが、アクションを使用します。

これらの 3 つの点のため、MVC を理解しようとするほとんどの PHP プログラマーは、MVC を見るたびに混乱してしまいます。


ThinkPHP がこのように書かれていれば、ほとんどの人はすぐに MVC アーキテクチャを理解できるでしょう
<br /><?php<br />//文件 D:\zbphp.com\www\Lib\Controller\MemberController.class.php<br />class MemberController extends Controller {<br /><br />    //访问地址 index.php?c=Member&a=index<br />    public function indexAction(){<br />        $this->display();<br />    }<br /><br />    //访问地址 index.php?c=Member&a=login<br />    public function loginAction(){<br />        $this->display();<br />    }<br /><br />    //访问地址 index.php?c=Member&a=register<br />    public function registerAction(){<br />        $this->display();<br />    }<br />}<br />



最後に書きました
最新ニュース、ThinkPHP 3.2.x の最新バージョンではこれらの点が修正され、Action クラスの名前が Controller に変更されました。 URL の m パラメータが c パラメータに変更され、直感的で分かりやすくなりました。
最後のコメント: 私は ThinkPHP を勉強すればするほど、MVC に悩まされてきました。途中で失敗もしましたが、幸運にも粘り強く続けることができました。そうでなければ、完全に諦めざるを得なかったでしょう。 (デフォルトで通信へようこ​​そ7#zbphp.com)







-----解決策-------- ------------コントローラーではなくアクションと呼ぶのが理にかなっています
アクション基本クラスがコントローラーの作業を完了します
そしてアクションから派生したクラスが完了しますこれはモデル (ビジネス モデル)
の仕事であり、モデル クラスはデータ テーブル

の単なるマッピングです。実際、開発マニュアルをよく見てみると、なぜわざわざ4年もかかるのかがわかります。
------解決策---------
投稿者が対処してくださいますように
-----解決策---------
そんなに分かりにくいですか?
------解決策----------------------

肛門はきついけど、しかし、それでも元の投稿者が最終的に精神的なつながりを持ったことに安心しました。
どれだけ時間がかかっても問題ありません。重要なのは、最終的にそれを理解したということです

-----解決策----------- ------ --
主な理由は、thinkphp が SSH から「学習」し、SSH の MVC がこのように名付けられているためです。
------解決策------
自分で簡単に実装できます。 MVC の。
初心者がそれを達成するには、わずか 3 か月と 1 年しかかからないかもしれません。ベテランは、Thinkphp フレームワークの同じ機能 (mvc の主要な機能) を実装します。ほんの数日、長くても数時間程度です。
この php モデレーターは 3 時間で十分だと見積もっています。
ThinkPHP の作者は PHP のトップエキスパートです。
ThinkPHP は非常にシンプルですが、非常に強力です。これが作者の優れた点です。
マニュアルも非常に充実していて便利です。
------解決策----------------------
あなたは間違っています、thinkphp 2.x もアクションあなたが言及したのは最も明確で、コードも最も理解しやすいです
thinkphp 3.x は複雑で理解しにくくなりました。
------解決策----------------------
理解する必要があることが実にたくさんあります
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。