ホームページ >バックエンド開発 >PHPチュートリアル >php-mvc ニュース プロジェクトの経験-1

php-mvc ニュース プロジェクトの経験-1

WBOY
WBOYオリジナル
2016-06-23 13:36:26840ブラウズ

ここ数日間、私はマスターpengchengのカスタムmvcと彼のニュース例を研究しており、そこからmvcの力を体験しました。改めて、偉大な巨匠、彭成氏に敬意を表したいと思います。巷にはたくさんのフレームワークがありますが、それが何であるかを知るために、自分自身のフレームワークを考えることで、フレームワークへの理解を深めていくことができます。それがなぜなのかも知る必要があります。まずは彭城先生にお線香を上げて…お辞儀をしたいと思います

さて、トラブルはやめましょう~本題に入りましょう。

前の 3 つのセクションでは、単純な MVC 構造と Smarty の導入について説明しました。 MVC では、Smarty を使用して V でその機能を完了できます。さらに、M では単にデータの一部を返し、C ではさまざまな型の自動インスタンス化を実装するだけです。 M と C は決して単純ではありません。それでは、[ニュースの例] からコントローラーとモデルの巧妙なトリックを学びましょう。

本来、機能ごとの文書は統一的に分類する必要があります。便宜上、ファイル パスを気にする必要はありません。ファイルのレイアウトは次のとおりです:

このうち、データ ファイルには Smarty で定義された各テンプレート ファイルが含まれており、smarty フォルダーはダウンロードした Smarty が保存される場所です。少し乱雑に見えるので、専門家は文句を言う必要はありません。

config.php には、配列にパックされた各パラメーター (VIEW エンジンと DB エンジン) の構成情報が含まれています。

この VIEW クラスでは、次の 3 つのメソッドが定義されています。 init メソッドは、名前が示すように、Smarty の初期化を完了するためのものです。これには、Smarty.class.php ファイルの導入、$viewtype で渡された Smarty クラスの生成、Smarty のさまざまな属性への値の割り当てが含まれます。渡された $config パラメータ (配列) を介して。 ASSIGN では、Assign メソッドがここで再度定義され、共通の静的メソッドにパックされます。これは外部呼び出しに便利です (再インスタンス化されません)。また、assign メソッドは、変換後に配列のデータ パッケージ化形式をパラメータとして使用できます。新しいパッケージの割り当て登録配列に各値を入力します。

メソッドの表示。ここでは、一般的な静的メソッドにラップするだけです。

最後に、この VIEW クラスのメソッドを再検討してみましょう。これらはすべてパブリック静的です。つまり、今後、外部から直接 VIEW を呼び出すときに、smarty.class.php をインポートしてインスタンス化する必要がなくなりました。 assign() 登録してから VIEW::display() を実行すると、mvc~

で view 関数を簡単に実装できます

プロジェクトではデータを保持する必要があるため、データベース拡張を使用して削除、変更、確認する必要があります。また、将来データベース操作を実行する必要があるときに、データベース エンジンをカプセル化して静的メソッドを直接呼び出すこともできるだろうかとも考えました。

インスタンス化されたオブジェクトを保存するために、クラスに静的プロパティも定義します。各静的メソッドを定義して、直接の外部呼び出しを容易にします。

このメソッドは Java の抽象クラスに似ていると思います。属性と抽象メソッドを定義できます。特に実装する必要はなく、関数を定式化するだけで済みます。ただし、抽象クラスとは少し異なります。外部呼び出しでは new が使用されず、継承がなく、メソッドの特定の実装は Init メソッドに依存して新しいクラス (私はこれを実装クラスと呼びます) を作成します。独自の静的属性を使用して「実装クラス」のメソッドを格納し、独自のメソッドを通じてクラスを呼び出して「実装クラス」の特定のメソッドを実装します。

鮮やかな比喩を与えると、カプセル化されたエンジンは中古車を販売するようなものです。「実装クラス」のさまざまな古い車 (メソッド) を受け入れる静的変数を定義し、古い車 (メソッド) を新しいシェルに置き換えます。 ( 販売用に public static メソッド (public static) にラップされます。

上記の VIEW エンジンには「実装クラス」として Smarty が含まれていますが、データベース (DB) エンジンには含まれていないため、その「実装クラス」を定義してメソッドを実装します。 mysql.class.phpです。 mysqlクラスのカプセル化に関しては、善良な人によって様々な意見があるので、できるだけ使いやすいようにカプセル化してください

注: 1> エンジン内に出力ステートメントを含めることはできません。MVC の考え方はレイヤに分割することであるため、データを取得した後はエコーすることはできず、返すことしかできません。

2> DB エンジンはモデルを表すものではなく、モデルの一部として理解できます

この時点で、MVC ではビュー層が完成し、モデルレイヤーは一時的に終了します。

前のセクションでは、コントローラーの機能がビューとモデルをインスタンス化し、それらのメソッドを呼び出すことであることを学びました。ただし、コントローラー内で直接インスタンス化するのではなく、関数 function.php を定義することによってインスタンス化します。 function.php はすでに古い知り合いです。写真を参照してください:


これを見た友人の中には、「冗談じゃないの?」と思う人もいるかもしれません。 MVC が約束した V メソッドについてはどうですか?


心配しないでください、私は猿のことを知りませんし、私を喜ばせることもできません。 Smarty には V メソッドが実装されており、Smarty の初期化は View を初期化することです。 VIEW エンジンは V の仕事を引き継ぎます。

PC.php という名前を付けます。各ファイルのインポート、各エンジンのインスタンス化の完了、URL によって渡されるパラメータの初期化を担当します。

ここでは、初期化を完了してセキュリティを向上させるために各プライベート メソッドを均一に実行するためにパブリック メソッドの run をカプセル化します

次に、統合されたエントリ ファイルをカプセル化し、その中の run メソッドを直接呼び出す必要があります

テストしてみましょう:


申し訳ありませんが、コントローラー ファイルを定義するのを忘れていました。これはおかしいです。私が猿によってここに送られたことを認めます~笑

さて、ここではコントローラーの機能がより強調表示されています。プロセスは次のようになります。統合されたものから入ります。エントリ ファイル admin.php を呼び出し、 run を呼び出すと各エンジン メソッドが初期化され、次に C メソッドを通じて制御層に入り、URL を呼び出してパラメータcontroller=xxx&method=xxx と対応する M および V を渡してビジネスを完了します。このようにして、 adminController.class.php ファイルを定義します

その中にテスト メソッドを 1 つだけ書き込むと、テストはテスト メソッドを呼び出します:

テストは成功し、エントリ ファイル、コントロール層、およびビューが実行されたことを示しますレイヤーはすべてOKです。発展し続けることができます






















声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。