ThinkPHP は MVC (Model-View-Controller、Model-View-Controller) パターンに基づいており、マルチレイヤー (多層) 設計をサポートしています。
モデル層
デフォルトのモデル層は Model クラスで構成されますが、プロジェクトが成長し、ビジネス システムがより複雑になるにつれて、単一のモデル層は非常に複雑になります。要件を解決するのは困難です。ThinkPHP は多層モデルをサポートしています。設計思想は非常にシンプルです。さまざまなモデル層は引き続きシステムの Model クラスから継承されますが、ディレクトリ構造と命名規則で区別されます。
関連する推奨事項: 「ThinkPHP チュートリアル 」
たとえば、特定のプロジェクト設計では、データを区別する必要があります。レイヤー、ロジック レイヤー、サービス レイヤーとその他のさまざまなモデル レイヤーを使用すると、モジュール ディレクトリの下にモデル、ロジック、サービス ディレクトリを作成し、ユーザー テーブル上のすべてのモデル操作を 3 つのレイヤーに分割できます:
1. データレイヤー: Model/UserModel はデータ関連の自動検証と自動完了、およびデータ アクセス インターフェイスを定義するために使用されます
2. ロジック レイヤー: Logic/UserLogic はユーザー関連のビジネス ロジックを定義するために使用されます
3. サービス層: Service/UserService によって使用されます。ユーザー関連のサービス インターフェイスなどを定義するために使用されます。
3 つのモデル操作クラスはすべて、Model クラスを継承できます。次に例を示します。
データ層:
Home/Model/UserModel.class.php namespace Home\Model; use Think\Model; class UserModel extends Model{ }
論理層:
Home/Logic/UserLogic.class.php namespace Home\Logic; use Think\Model; class UserLogic extends Model{ }
サービス層: Home/Service/UserService.class.php
namespace Home\Service; use Think\Model; class UserService extends Model{ }
さまざまなモデル層を区別した後、ユーザー データの操作は非常に複雑になります。組み込みの D メソッドを使用して呼び出すと非常に便利です:
D(‘User‘) //实例化UserModel D(‘User‘,‘Logic‘) //实例化UserLogic D(‘User‘,‘Service‘) //实例化UserService
デフォルトのモデル層は Model ですが、設定を変更することもできます。たとえば:
‘DEFAULT_M_LAYER‘ => ‘Logic‘, // 更改默认的模型层名称为Logic
変更後、インスタンス化するときに、次のように変更する必要があります:
D(‘User‘) //实例化UserLogic D(‘User‘,‘Model‘) //实例化UserModel D(‘User‘,‘Service‘) //实例化UserService
モデル層の階層分割は非常に柔軟で、開発者はプロジェクトのニーズに応じてモデル階層を自由に定義および追加できます。モデルレイヤーのみを使用することもできます。
View (ビュー) レイヤー
ビュー レイヤーは、テンプレートとテンプレート エンジンで構成され、テンプレート内で PHP コードを直接使用できます。テンプレート エンジンは、後で説明するように、ドライバーを通じて他のサードパーティのテンプレート エンジンもサポートできます。マルチレイヤー ビューは、ディレクトリ (つまり、テンプレート テーマ) によって簡単に区別できます。例:
View/default/User/add.html View/blue/User/add.html
より複雑なマルチレイヤー ビューは、別のビュー ディレクトリを使用することでさらに完成させることができます。たとえば、
view 普通视图层目录 mobile 手机端访问视图层目录
この利点は、異なるビュー レイヤーごとに異なるテンプレート テーマ機能をサポートできることです。
デフォルトのビュー レイヤーはビュー ディレクトリです。次のように設定を調整できます:
‘DEFAULT_V_LAYER‘ => ‘Mobile‘, // 默认的视图层名称更改为Mobile
デフォルト以外のビュー レイヤー ディレクトリのテンプレートを取得するには、T 関数を使用する必要があります。 、これについては後で説明します。
コントローラー層
ThinkPHP のコントローラー層は、コア コントローラーとビジネス コントローラーで構成され、コア コントローラーはシステム内の App クラスによって完成され、スケジューリングを担当します。 HTTP リクエストのインターセプトと転送、設定の読み込みなどを含む、アプリケーション (モジュール、コントローラー、操作を含む) の制御。ビジネス コントローラーは、ユーザー定義のコントローラー クラスによって完成します。マルチレイヤー ビジネス コントローラーの実装原理は、ビジネス コントローラーやイベント コントローラーなどのモデルの階層化と似ています。
Controller/UserController //用于用户的业务逻辑控制和调度 Event/UserEvent //用于用户的事件响应操作
アクセス コントローラー Home/Controller/UserController.class.php は次のように定義されます。
namespace Home\Controller; use Think\Controller; class UserController extends Controller{ }
イベント コントローラー Home/Event/UserEvent.class.php は次のように定義されます。
namespace Home\Event; use Think\Controller; class UserEvent extends Controller{ }
UserController は外部の対話型応答を担当し、http:// などの URL リクエストを通じて応答します。 serverName/User/index、UserEvent は内部イベント応答を担当し、内部でのみ呼び出すことができます:
A(‘User‘,‘Event‘);
デフォルトのアクセス コントローラー層はコントローラーです。設定は次のように調整できます:
‘DEFAULT_C_LAYER‘ => ‘Event‘, // 默认的控制器层名称改为Event
つまり、外部から隔離されています。
マルチレイヤ コントローラの分割は必須ではなく、アプリケーションのニーズに応じて自由に階層化できます。コントローラー層では、必要に応じて階層化モデルを呼び出すことも、さまざまな階層化されたビュー (テーマ) を呼び出すこともできます。
MVC の 3 つの層では、ThinkPHP は M や V に依存しません。C のみまたは V のみを持つこともできます。これは、ThinkPHP 設計において非常に重要なユーザー エクスペリエンス設計です。ユーザーは定義するだけで済みます。 Cがなくても自動認識できます。
以上がthinkphpのmvcは何を表していますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。