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

WBOY
リリース: 2016-06-23 13:54:36
オリジナル
1486 人が閲覧しました


この投稿は、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 への通信を歓迎します)







ディスカッション (解決策) への返信

zf についてどう思いますか

コントローラーではなくアクションと呼ぶのが理にかなっていますか?

Actionの基本クラスでControllerの仕事が完了します

Actionから派生したクラスでModel(ビジネスモデル)の仕事が完了します
そしてModelクラスはデータテーブルのマッピングに過ぎません

実際、見てみれば分かります開発マニュアルを注意深く読んでいるのに、なぜわざわざ4年も費やしたのでしょうか?

投稿者が真剣に受け止めてくれることを願っています

投稿者が真剣に受け止めてくれることを願っています

ありがとう!

コントローラーではなくアクションと呼ぶのが理にかなっています
アクション基本クラスはコントローラーの仕事を完了します
そしてアクションから派生したクラスはモデル(ビジネスモデル)の仕事を完了します
そして、モデルクラスは単なるデータのマッピングです表
実際、マジで開発マニュアルを見ればわかるのに、なぜわざわざ4年もかけるの?



勉強になりました、以上です。ただし、コントローラーという名前を付けると非常に理解しやすくなります。私は最初からAction.ClassとModel.classのことを考えていたので、ThinkPHP mvcは全く理解できませんでした。

そんなにわかりにくいですか?


菊も咲いていますが、やはり本題が晴れてホッとしています。
短くしすぎないでください。重要なのは、最終的にそれに気づくことです

思考とフレームワークは 2 つのものです。ただし、フレームワークは必ずしも使用する必要はありません。

私はいつも ThinkPHP がファクトリーモデルであると感じていました。

主に thinkphp が SSH から「学習」するため、SSH の MVC はこのように名前が付けられます。

主な理由は、thinkphp が SSH から「学習」するためで、SSH の MVC はこのように名前が付けられています。



今日読み直して、大体理解できました。ただし、分散アーキテクチャ、HTTPSQS、スフィンクスは使用したことがありません。
コンピューターの構成が低すぎます。IDE をインストールするときでも、CPU は 100% です

あなたは間違っています。thinkphp 2.x はあなたが言及したアクションであり、最も明確で、コードは最も理解しやすいです
さてthinkphp 3.x ですが、複雑になり理解しにくくなります。

私はいつも ThinkPHP はファクトリーモードだと感じていました。


なぜそう思いますか?

実際、アドレスの m は module module で、a はメソッドの action です
モジュールとメソッドは同時にコントローラーのメソッドを見つけるので、 module+action=controller は m+a= を意味します。アドレスの c
そして、MVC の m はモデルであり、アドレスで呼び出すことはできません。システムによって内部的に呼び出される必要があります...
モジュールとモデルの英語の単語が両方とも m で始まるという混乱のせいにする必要があります。 ..

これで明確になるはずです:
mvc = モデル + ビュー + コントローラー
コントローラー = モジュール + アクション

このように、理解しなければならないことが本当にたくさんあります。初心者の私たちはどうすれば生き残れるでしょうか?

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