TP フレームワークのマルチレイヤー MVC 使用状況分析

*文
リリース: 2023-03-18 18:38:02
オリジナル
2031 人が閲覧しました

この記事では主に thinkphp 多層 MVC の使用法を紹介し、thinkPHP での多層 MVC の具体的な原理と関連する使用スキルを例とともに分析します。必要な友人は参考にしてください。お役に立てれば幸いです。

詳細は次のとおりです:

ThinkPHP はマルチレイヤー設計をサポートしています。

1. モデルレイヤーモデル

たとえば、プロジェクト設計で、データレイヤー、ロジックレイヤー、サービス層などの場合は、モジュール「モデル、ロジック、およびサービスのディレクトリを作成」ディレクトリの下に追加し、ユーザー テーブル上のすべてのモデル操作を 3 つの層に分割できます。

1.Model/UserModelは、データ関連の自動検証、自動完了、およびデータアクセスインターフェイスの定義に使用されます

2.Logic/UserLogicalは、ユーザー関連のビジネスロジックの定義に使用されます

3.Service/UserServiceは、定義に使用されますユーザー 関連するサービス インターフェイス

これら 3 つのモデルはすべて、Model クラスを継承します。たとえば、データ層 Home/Model/UserModel.class.php


namespace Home\Model;
use Think\Model;
class UserModel extends Model{}
ログイン後にコピー


論理層 Home/Logic/UserLogical.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 メソッドまたは M メソッドを使用して


を呼び出すことができます
D('User') //实例化UserModel
D('User','Logic') //实例化UserLogic
D('User','Service') //实例化UserService
ログイン後にコピー


デフォルトのモデル層 Model の下のデータ アクセス インターフェイス クラスを呼び出す場合、2 番目のパラメーターのモデル ファイル名はありません。 デフォルトのモデル層は、次のように設定を変更することもできます:

'DEFAULT_M_LAYER' => 'Logic' , // デフォルトのモデル層名を Logic に変更します


この場合、インスタンス化メソッドもそれに応じて変更する必要があります


D('User') //实例化UserLogic
D('User','Model') //实例化UserModel
D('User','Service') //实例化UserService
ログイン後にコピー


D('User') を使用すると、デフォルトでインスタンスに移動します。UserLogice クラスに変換されるため、非常に柔軟です。データを検証する場合、自動補完は js で行われ、データの取得はサービス インターフェイスから行われます。レイヤー、その他のレイヤーは必要ありません。

2. ビュー レイヤー ビュー

ビュー レイヤーはテンプレートとテンプレート エンジンで構成されており、テンプレート内で php コードを直接使用できます。 (テンプレート テーマ) ) 区別するには、たとえば:

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 リクエストのインターセプト、転送、設定の読み込みなど、アプリケーションのスケジュール制御を担当します。ここで説明するのは、ユーザー定義のコントローラー クラスによって完成されるビジネス コントローラーです。マルチレイヤー ビジネス コントローラーの実装原理は、ビジネス コントローラーやイベント コントローラーなどのモデルの階層化と同様です。


Controller/UserController //用于用户的业务逻辑控制和调度
Event/UserEvent //用于用户的事件响应操作
ログイン後にコピー


イベントはまだ使用されていません。Web 開発ではユーザー イベントはほとんどなく、ほとんどが JS で完成します。

アクセス コントローラー 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{
}
ログイン後にコピー


UserContrller は外部インタラクション応答を担当し、http://serverName/User/index などの URL リクエストを通じて応答します。UserEvent は内部イベント応答を担当し、A('User','Event') のみを呼び出すことができます。内部的にも同様にデフォルトのコントローラー層を設定できます:

'DEFAULT_C_LAYER' => 'Event', // 默认的控制器层名称改为Event
ログイン後にコピー

多層コントローラーは必須ではなく、アプリケーションのニーズに応じて自由に階層化できます。必要に応じてコントローラーで使用したり、さまざまな階層ビューを表示してさまざまなテーマを実装したりできます。

MVC の 3 つの層において、ThinkPHP は M と V に依存しません。C のみまたは V のみを持つことができます。ユーザーはビューを定義するだけでよく、C がなくても自動的に認識されます。しかし、この奇妙な書き方始めたばかりの多くのプログラマは非常に混乱するでしょう。

マルチレイヤーデザインは現在のプロジェクトでは使用されていませんが、.net プロジェクトではよく見られます。次回使用するときにはさらに追加します。

関連推奨事項:

TP5認証権限管理例

TP5自動ローディング機構詳細説明

TP5モデル機能概要

以上がTP フレームワークのマルチレイヤー MVC 使用状況分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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