この記事では、thinkphp マルチレイヤー MVC の使用方法を例とともに説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
ThinkPHP はマルチレイヤー設計をサポートしています。
1.モデルレイヤーモデル
多層ディレクトリ構造と命名規則を使用して多層モデルを設計します。たとえば、プロジェクト設計で、データ層、ロジック層、サービス層などの異なるモデル層を区別する必要がある場合、モデルを作成できます。モジュール ディレクトリ内の、Logic、Service ディレクトリは、ユーザー テーブル上のすべてのモデル操作を 3 つのレベルに分割します。
1.Model/UserModel は、データ関連の自動検証、自動完了、およびデータ アクセス インターフェイスを定義するために使用されます
2.Logic/UserLogicalは、ユーザー関連のビジネスロジックを定義するために使用されます
3.Service/UserServiceはユーザー関連のサービスインターフェイスに使用されます
これら 3 つのモデルはすべて、データ層 Home/Model/UserModel.class.php などの Model クラスを継承します
リーリーロジック層 Home/Logic/UserLogical.class.php
リーリーサービス層 Home/Service/UserService.class.php
リーリー呼び出し時に組み込みの D メソッドまたは M メソッドを使用できます
リーリー デフォルトのモデル層 Model の下のデータ アクセス インターフェイス クラスを呼び出す場合、2 番目のパラメーターのモデル ファイル名はありません。
デフォルトのモデル層は Model です。
コードをコピーします コードは次のとおりです: 'DEFAULT_M_LAYER' => 'Logic', // デフォルトのモデルレイヤー名を Logic に変更します
この場合、インスタンス化メソッドをそれに応じて変更する必要があります
D ('User') を使用すると、デフォルトで UserLogice クラスがインスタンス化されることがわかります。データを検証すると、自動補完がサービス インターフェイスから取得されます。この方法では、サービス層を 1 つだけ持つことができ、他の層は必要ありません。
2. レイヤーの表示
ビュー レイヤーはテンプレートとテンプレート エンジンで構成されます。一般的なサードパーティ テンプレートは .tpl です。たとえば、ディレクトリ (テンプレート テーマ) を使用するだけで、複数のビュー レイヤーを区別できます。 :
View/default/User/add.html
View/blue/User/add.html
複雑なマルチレイヤー ビューは、次のような異なるビュー ディレクトリを使用して区別することもできます。
共通ビューレイヤーディレクトリを表示する
モバイルからビューレイヤーディレクトリにアクセス
このようにして、次のように、異なるテンプレートで異なるページ スタイルを使用でき、デフォルトでビュー ディレクトリを使用することもできます:
コードをコピーします コードは次のとおりです: 'DEFAULT_V_LAYER' => 'Mobile', // デフォルトのビューレイヤー名が Mobile に変更されます
3.コントローラー層Controller
ThinkPHP コントローラーには 2 つのカテゴリがあり、1 つはコア コントローラー、もう 1 つはビジネス コントローラーです。コア コントローラーは、thinkphpThinkPHPLibraryThinkControllerHproseController.class.php などの ThinkPHP ディレクトリにあり、アプリケーションのスケジュール制御を担当します。 HTTP リクエストのインターセプト、転送、設定の読み込みなど。ここで説明するのは、ユーザー定義のコントローラー クラスによって完成されるビジネス コントローラーです。マルチレイヤー ビジネス コントローラーの実装原理は、ビジネス コントローラーやイベント コントローラーなどのモデルの階層化と同様です。 リーリー
イベントはまだ使用されていませんが、非常にハイエンドに見えます。Web開発ではユーザーイベントはほとんどなく、ほとんどがJSで完了します。アクセス コントローラー Home/Controller/UserController.class.php は次のように定義されます:
リーリー
イベント コントローラー Home/Event/UserEvent.class.php は次のように定義されます:リーリー
UserContrller は外部インタラクション応答を担当し、http://serverName/User/index などの URL リクエストを通じて応答します。UserEvent は内部イベント応答を担当し、同様に内部でのみ A('User','Event') を呼び出すことができます。デフォルトのコントローラーレイヤーを設定できます:
コードをコピーします コードは次のとおりです: 'DEFAULT_C_LAYER' => 'Event', // デフォルトのコントローラーレイヤー名が Event に変更されます
内部と外部は分離されており、多層コントローラーは必須ではなく、アプリケーションのニーズに応じて自由に階層化でき、必要に応じてコントローラー内でさまざまな階層化されたモデルを呼び出すことができ、さまざまな階層化されたビューを表示することもできます。のさまざまな実装を実現します。
マルチレイヤーデザインは現在のプロジェクトでは使用されていませんが、.net プロジェクトではよく見られます。次回使用するときにはさらに追加します。
この記事が、thinkPHP フレームワークに基づく皆様の PHP プログラミングに役立つことを願っています。
興味がありそうな記事: