MVC 構造は、実際には、Model、Controller、View の 3 つの単語の略語です。Model の主なタスクは、必要な方法でデータベースまたは他のファイル システムからデータを読み取ることです。 View は主にページを担当し、データを HTML 形式でユーザーに表示します。コントローラーは主にビジネスロジックを担当し、ユーザーのリクエストに応じてリクエストを割り当てます。たとえば、ログインインターフェイスを表示するには、コントローラーの userController の loginAction メソッドを呼び出して表示する必要があります。
以下では、PHP を使用して単純な MVC 構造システムを作成します。
まず、MVC システム全体への唯一の入り口として、単一のエントリ ポイントであるブートストラップ ファイルindex.php を作成します。単一エントリポイントとは何ですか?いわゆる単一エントリ ポイントとは、アプリケーション全体の入口が 1 つだけあり、すべての実装がこの入口を通じて転送されることを意味します。なぜ単一のエントリポイントが必要なのでしょうか?単一のエントリ ポイントにはいくつかの利点があります。 まず、システムによってグローバルに処理される一部の変数、クラス、およびメソッドをここで処理できます。 たとえば、データの予備フィルタリングを実行する必要があり、セッション処理をシミュレートする必要があり、いくつかのグローバル変数を定義する必要があり、さらにいくつかのオブジェクトや変数をレジスタに登録する必要もあります。次に、プログラムの構造がより明確になります。もちろんメリットもたくさんあります。 :)
リーリーこの文書には 4 つの文しかありません。では、文ごとに分析してみましょう。
include("core/ini.php"); core/ini.php を見てみましょう。
リーリーこのファイルは最初に include_path を設定します。つまり、インクルードされたファイルを見つけたい場合は、このディレクトリ内を検索するようにシステムに指示します。実際、__autoload() メソッドを定義しています。このメソッドは、関数をインスタンス化するときに、ファイルが存在しない場合に自動的にロードされます。公式の説明は次のとおりです:
PHP 5 では、これは必要なくなりました。まだ定義されていないクラス/インターフェイスを使用しようとしている場合に自動的に呼び出される __autoload 関数を定義できます。この関数を呼び出すことで、スクリプト エンジンにPHP がエラーで失敗する前にクラスをロードする最後のチャンスです。
次に次の文を見てみましょう:Initializer::initialize();
これは、initializer クラスの静的関数である、initialize を呼び出すことを意味します。ini.php で include_path を設定し、__autoload を定義したため、プログラムは core/main ディレクトリで initializer.php を自動的に検索します。
initializer.php ファイルは次のとおりです:
リーリーこの関数は非常に単純で、静的関数、初期化関数を定義するだけです。このように、今後ファイルまたは __autoload がインクルードされる場合、それらはこれらのディレクトリで検索されます。
OK、続けて 3 番目の文を見てみましょう $router =loader::load("router");
この文も非常に簡単で、ローダー関数をロードする静的関数loadです。loader.phpに行きましょう
。 リーリー将来的にこの MVC システムをモデル、ヘルパー、構成などのコンポーネントで強化する可能性があるため、このファイルはオブジェクトをロードするために使用されます。ロードされたコンポーネントが有効な範囲内にない場合は、例外がスローされます。その場合、実際に、ここではシングルトン設計パターンが使用されます。つまり、このオブジェクトは実際にはインスタンス化されたオブジェクトのみになります。インスタンス化されていない場合は、インスタンス化されません。
さて、ここでロードしたいのはルーターコンポーネントなので、router.php ファイルを見てみましょう。このファイルの機能は URL のマッピングと URL の解析です。
router.php
リーリー最初にユーザーリクエストの URL である $_GET を取得し、次に URL からコントローラー、アクション、およびパラメーターを解析していることがわかります。たとえば、アドレスは http://www.tinoweb.cn/user/profile/id/3 です。上記のアドレスから、コントローラーがユーザー、アクションがプロファイル、パラメーターが ID であることがわかります。 3. OK、見てみましょう。最後の文は次のとおりです:dispatcher::dispatch($router);
この文の意味は非常に明確で、URL 解析の結果を取得し、ディスパッチャーを使用してコントローラーとユーザーに応答するアクションを配布することです。
それでは、dispatcher.php ファイルを見てみましょう:
リーリーこのクラスは $router を取得し、ユーザーのリクエストに応答するファイル内のコントローラーとアクションを検索します。
OK、シンプルな MVC 構造はこれだけです。もちろん、これは View と Model を含まないため、完全な MVC ではありません。時間があるときにさらに追加します。上記のシステムをテストするためにコントローラー ファイルを作成してみましょう。 app/controllers/ の下に user.php ファイルを作成します。
リーリー次に、ブラウザに http://localhost/index.php?user/register または http://localhost/index.php?user/login を入力してテストします。