この記事では主に thinkphp マルチレイヤー MVC の使用方法を紹介し、thinkPHP でのマルチレイヤー MVC の具体的な原理と関連する使用スキルを例とともに分析します。必要な方は参考にしてください。
この記事では thinkphp multi の使用方法について説明します。 -layer 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
デフォルトモデルを呼び出すレイヤー モデル データ アクセス インターフェイス クラスをダウンロードするとき、2 番目のパラメーターのモデル ファイル名はありません。デフォルトのモデル レイヤーは、次のように設定を変更することもできます:
この場合、コードは次のとおりです。 、インスタンス化メソッドは対応する必要があります Modified
'DEFAULT_M_LAYER' => 'Logic', // 更改默认的模型层名称为Logic
2. ビュー レイヤー ビュー
ビュー レイヤーはテンプレートとテンプレート エンジンで構成されており、テンプレート内で php コードを直接使用できます。 (テンプレート テーマ) ) 区別するには、例:
View/default/User/add.htmlView/blue/User/add.html
異なるビュー ディレクトリを使用して、より複雑なマルチレイヤー ビューを区別することもできます。例:
モバイルでビュー レイヤー ディレクトリにアクセス
このようにして、異なるテンプレートで異なるページ スタイルを使用でき、次のようにビュー ディレクトリをデフォルトにすることもできます:
コードは次のとおりです。以下:
D('User') //实例化UserLogic D('User','Model') //实例化UserModel D('User','Service') //实例化UserService
3. コントローラー層コントローラー
ThinkPHP コントローラーには 2 つのカテゴリーがあり、1 つはコア・コントローラーで、もう 1 つはビジネス・コントローラーです。コア・コントローラーは、thinkPHP ディレクトリー (thinkphpThinkPHPLibraryThinkControllerHproseController.class.php) にあります。 HTTP リクエストのインターセプト、転送、設定の読み込みなど、アプリケーションのスケジューリング制御を担当します。ここで説明するのは、ユーザー定義のコントローラー クラスによって完成されるビジネス コントローラーです。マルチレイヤー ビジネス コントローラーの実装原理は、ビジネス コントローラーやイベント コントローラーなどのモデルの階層化と同様です。
'DEFAULT_V_LAYER' => 'Mobile', // 默认的视图层名称更改为Mobile
イベントはまだ使用されていません。Web開発ではユーザーイベントはほとんどなく、ほとんどがJSで完了します。
アクセス コントローラー Home/Controller/UserController.class.php は次のように定義されます:
Controller/UserController //用于用户的业务逻辑控制和调度 Event/UserEvent //用于用户的事件响应操作
イベント コントローラー Home/Event/UserEvent.class.php は次のように定義されます:
namespace Home\Controller; use Think\Controller; class UserController extends Controller{ }
UserContrller は外部対話型応答、http://www.php.cn/ などの URL リクエストによる応答を担当し、UserEvent は内部イベント応答を担当し、同様に内部でのみ A('User','Event') を呼び出すことができます。デフォルトのコントローラーレイヤーを設定できます:
コードは次のとおりです:namespace Home\Event; use Think\Controller; class UserEvent extends Controller{ }
マルチレイヤーデザインは現在のプロジェクトでは使用されていませんが、.net プロジェクトではよく見られます。次回使用するときにはさらに追加します。