この投稿は、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 間違っています。そのメソッドは MVC モードではなくファクトリー モードです。
PHP MVC は本当に拷問です! ! ! ~
MVCとはModel View Controllerの略で、プログラミング手法の一つです。しかし、私は PHP プログラマとして 5 ~ 6 年働いていますが、MVC フレームワークを使用したことがなく、MVC について常に混乱していました。国内の MVC フレームワークは基本的に ThinkPHP です 私が就職活動をしていたとき、MVC を知らず、ThinkPHP フレームワークを使用しなかったため、何度も壁にぶつかり、ますます混乱し、疑問を抱き、落ち込んでしまいました。
今回、改めてマスタリングの心構えを理解しようと、ThinkPHP フレームワークの公式サイトの情報を読み直してみたのですが、残念ながらここに該当する URL がまだ理解できていません。読めば読むほどめまいがする。 MVC のことではありませんか? なぜコントローラー クラスがないのですか? Action クラスが表示されるのはなぜですか? 「アクション」はあるのに「Controller」がないのはなぜですか? 「URL パラメータ a」と「パラメータ m」があるのはなぜですか? 「パラメータ a」は「アクション クラス」を指しますか? 「パラメータ m」は「モデルクラス」を指しますか? ?
ThinkPHP はなぜ難しいのですか?
うわー
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 とクラス内の Action
2) URLパラメータ m とクラス内のモデル
3) これは MVC フレームワークですが、コントローラーを表すために Action クラスを使用します
これら 3 つの点のため、MVC を理解しようとするほとんどの PHP プログラマーは毎回混乱します。それ!
ThinkPHP がこのように書かれていれば、ほとんどの人はすぐに MVC アーキテクチャを理解できるでしょう
<?php//文件地址:D:\zbphp.com\www\Lib\Action\MemberAction.class.phpclass MemberAction extends Action { public function index(){ $this->display(); } public function login(){ $this->display(); } public function register(){ $this->display(); }}
最後に書きました
最新ニュース、ThinkPHP の最新バージョン 3.2.x ではこれらの点が修正されており、 Action クラスの名前が Controller に変更されました。 URL の m パラメータが c パラメータに変更され、直感的で分かりやすくなりました。
最後に: 私は数年間 MVC に悩まされてきましたが、ThinkPHP を勉強すればするほど混乱を感じます。途中で失敗もしましたが、幸運にも粘り強く続けることができました。そうでなければ、完全に諦めざるを得なかったでしょう。 (default7#zbphp.com への通信を歓迎します)
ディスカッション (解決策) への返信
コントローラーではなくアクションと呼ぶのが理にかなっていますか?
Actionの基本クラスでControllerの仕事が完了します Actionから派生したクラスでModel(ビジネスモデル)の仕事が完了します
そしてModelクラスはデータテーブルのマッピングに過ぎません
実際、見てみれば分かります開発マニュアルを注意深く読んでいるのに、なぜわざわざ4年も費やしたのでしょうか?
投稿者が真剣に受け止めてくれることを願っています
投稿者が真剣に受け止めてくれることを願っています
ありがとう!
コントローラーではなくアクションと呼ぶのが理にかなっています
アクション基本クラスはコントローラーの仕事を完了します
そしてアクションから派生したクラスはモデル(ビジネスモデル)の仕事を完了します
そして、モデルクラスは単なるデータのマッピングです表
実際、マジで開発マニュアルを見ればわかるのに、なぜわざわざ4年もかけるの?
そんなにわかりにくいですか?
菊も咲いていますが、やはり本題が晴れてホッとしています。
短くしすぎないでください。重要なのは、最終的にそれに気づくことです
思考とフレームワークは 2 つのものです。ただし、フレームワークは必ずしも使用する必要はありません。
私はいつも ThinkPHP がファクトリーモデルであると感じていました。
主に thinkphp が SSH から「学習」するため、SSH の MVC はこのように名前が付けられます。
主な理由は、thinkphp が SSH から「学習」するためで、SSH の MVC はこのように名前が付けられています。
あなたは間違っています。thinkphp 2.x はあなたが言及したアクションであり、最も明確で、コードは最も理解しやすいです
さてthinkphp 3.x ですが、複雑になり理解しにくくなります。
私はいつも ThinkPHP はファクトリーモードだと感じていました。
実際、アドレスの m は module module で、a はメソッドの action です
モジュールとメソッドは同時にコントローラーのメソッドを見つけるので、 module+action=controller は m+a= を意味します。アドレスの c
そして、MVC の m はモデルであり、アドレスで呼び出すことはできません。システムによって内部的に呼び出される必要があります...
モジュールとモデルの英語の単語が両方とも m で始まるという混乱のせいにする必要があります。 ..
これで明確になるはずです:
mvc = モデル + ビュー + コントローラー
コントローラー = モジュール + アクション
このように、理解しなければならないことが本当にたくさんあります。初心者の私たちはどうすれば生き残れるでしょうか?