ホームページ バックエンド開発 PHPチュートリアル TP フレームワークのマルチレイヤー MVC 使用状況分析

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

Dec 28, 2017 pm 03:38 PM
分析する 使用法

この記事では主に 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 サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSPコメントの使用法と分類を分析する JSPコメントの使用法と分類を分析する Feb 01, 2024 am 08:01 AM

JSP コメントの分類と使用状況の分析 JSP コメントは 2 つのタイプに分類されます。 単一行コメント: で終わる、単一行のコードのみコメントできます。複数行のコメント: /* で始まり */ で終わると、複数行のコードにコメントを付けることができます。単一行のコメントの例 複数行のコメントの例/**これは複数行のコメントです*コードの複数行にコメントできます*/JSP コメントの使用法 JSP コードを読みやすくするために JSP コメントを使用できます。

WPSdatedif関数の使い方 WPSdatedif関数の使い方 Feb 20, 2024 pm 10:27 PM

WPS は一般的に使用されるオフィス ソフトウェア スイートであり、WPS テーブル関数はデータ処理と計算に広く使用されています。 WPS テーブルには、2 つの日付間の時差を計算するために使用される、DATEDIF 関数という非常に便利な関数があります。 DATEDIF 関数は英語の DateDifference の略語で、構文は次のとおりです: DATEDIF(start_date,end_date,unit) ここで、start_date は開始日を表します。

C言語でexit関数を正しく使用する方法 C言語でexit関数を正しく使用する方法 Feb 18, 2024 pm 03:40 PM

C 言語で exit 関数を使用する方法には、具体的なコード例が必要です。C 言語では、プログラムの実行をプログラムの初期段階で終了したり、特定の条件下でプログラムを終了したりする必要があることがよくあります。 C 言語には、この関数を実装するための exit() 関数が用意されています。この記事では、exit() 関数の使用法を紹介し、対応するコード例を示します。 exit() 関数は C 言語の標準ライブラリ関数であり、ヘッダー ファイルに含まれています。その機能はプログラムの実行を終了することであり、整数を取ることができます。

MySQL ISNULL関数の詳しい解説と使い方紹介 MySQL ISNULL関数の詳しい解説と使い方紹介 Mar 01, 2024 pm 05:24 PM

MySQL の ISNULL() 関数は、指定された式またはカラムが NULL かどうかを判断するために使用される関数です。ブール値、式が NULL の場合は 1、それ以外の場合は 0 を返します。 ISNULL()関数は、SELECT文やWHERE句の条件判定に使用できます。 1. ISNULL() 関数の基本構文: ISNULL(expression) ここで、expression は、NULL かどうかを判断する式です。

DreamWeaver CMS のセカンダリディレクトリを開けない原因の分析 DreamWeaver CMS のセカンダリディレクトリを開けない原因の分析 Mar 13, 2024 pm 06:24 PM

タイトル: DreamWeaver CMS のセカンダリディレクトリを開けない原因と解決策の分析 Dreamweaver CMS (DedeCMS) は、さまざまな Web サイトの構築に広く使用されている強力なオープンソースのコンテンツ管理システムです。ただし、Web サイトの構築中に、セカンダリ ディレクトリを開けない状況が発生し、Web サイトの通常の動作に問題が発生することがあります。この記事では、セカンダリ ディレクトリを開けない考えられる理由を分析し、この問題を解決するための具体的なコード例を示します。 1. 考えられる原因分析: 疑似静的ルール構成の問題: 使用中

SQL の解析での unique キーワードの使用 SQL の解析での unique キーワードの使用 Feb 18, 2024 pm 09:21 PM

SQL での個別の使用法の詳細な説明 SQL データベースでは、重複データを削除する必要がある状況によく遭遇します。現時点では、distinct キーワードを使用すると、重複データを削除し、クエリ結果をより明確かつ正確にすることができます。 Different の基本的な使用法は非常に簡単で、select ステートメントで Distinct キーワードを使用するだけです。たとえば、次は通常の選択ステートメントです: SELECTcolumn_name

CSS Transform を使用して要素を変換する CSS Transform を使用して要素を変換する Feb 24, 2024 am 10:09 AM

CSS での Transform の使用 CSS の Transform プロパティは、HTML 要素の移動、回転、拡大縮小、傾斜などの操作を実行できる非常に強力なツールです。要素の外観を劇的に変更し、Web ページをよりクリエイティブでダイナミックにすることができます。この記事では、Transform のさまざまな使用方法を詳しく紹介し、具体的なコード例を示します。 1. 移動 (Translate) 移動とは、要素を x 軸および y 軸に沿って指定された距離だけ移動することを指します。その構文は次のとおりです。

Apple ショートカットの使用方法 Apple ショートカットの使用方法 Feb 18, 2024 pm 05:22 PM

Apple ショートカット コマンドの使用方法 技術の継続的な発展により、携帯電話は人々の生活に欠かせないものになりました。数ある携帯電話ブランドの中でも、Appleの携帯電話は安定したシステムと強力な機能で常にユーザーに愛されています。その中で、Apple ショートカット コマンド機能は、ユーザーの携帯電話体験をより便利かつ効率的にします。 Apple ショートカットは、Apple が iOS12 以降のバージョン向けに開始した機能で、ユーザーがカスタム コマンドを作成して実行することで携帯電話の操作を簡素化し、より効率的な作業や作業を実現するのに役立ちます。

See all articles