アーキテクチャの概要

ThinkPHP5.0ベースのアプリケーションMVC(モデル-ビュー-コントローラ)組織的。

MVCは、入力、処理及び出力が別々に必須のアプリケーションとなり、設計パターンです。モデル(M)、ビュー(V)、コントローラ(C)、それぞれ独自の処理タスク:MVCアプリケーションを使用する3つのコア・コンポーネントに分割されています。

ルーティング決定、ルーティングまたはケースを閉じることにより、URLアクセス5.0が一致するルーティングは、に基づいていない場合。

http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/参数/值…

ここでは次に何をするために理解するために必要ないくつかの概念があり、多くの場合、以下のページで呼ばれることもあります。

エントリ・ファイル

ユーザが要求したPHPファイルは、要求(ノート、必ずしもURLリクエスト)ライフサイクルを処理する責任があり、最も一般的なエントリ文書であるindex.phpこのような背景のような新しいインポート文書を、追加しながら、時にはいくつかの特別なニーズに合わせて、別途設けられたファイルエントリモジュールadmin.phpまたはコントローラプログラムエントリは、thinkエントリのファイルに属します。

アプリケーション

アプリケーションはThinkPHP、システムによって、オブジェクト管理システムアーキテクチャとライフサイクルである  \think\Appアプリケーションは、多くの場合、同じアプリケーションディレクトリ(と、入り口のファイルで呼び出されて実行され、クラスを完了するためにAPP_PATH)私たちは、同じアプリケーションであると信じていたアプリケーションが、アプリケーション複数のエントリファイルがあるかもしれません。

アプリケーションは、独自の個別のプロファイル、パブリック(機能)ファイルを持っています。

モジュール

典型的なアプリケーションでは、これらのモジュールは、アプリケーションディレクトリのサブディレクトリであるのが普通である。複数のモジュールで構成され、各モジュールは、独自の個別の構成ファイル、文書や公共図書館のファイルを持っています。

5.0では、次のモジュールを1つだけ適用する場合は、このモジュールのサブディレクトリを省略し、アプリケーション構成ファイルを変更することができ、単一のモジュールアーキテクチャ設計をサポートしています。

'app_multi_module' =>	false, 

コントローラ

各モジュールは独立しているMVC、ライブラリと設定ファイルを要求に応答する責任複数のコントローラの下にモジュール、および各コントローラは、実際には別のコントローラクラスです。

コントローラは、要求を受信する責任があり、モデルに関連するプロセスを呼び出し、最後にビューを介して出力されます。厳密に言えば、コントローラは、あまりにも多くのビジネスロジックの処理に関与すべきではありません。

実際には、制御装置5.0をスキップすることができ、我々は、直接モデルまたは経路によって処理される他のクラスのスケジュールを設定することを要求することができます。

5.0コントローラクラスより柔軟な、任意のベースクラスライブラリを継承する必要はないかもしれません。

典型的なIndex次のようにコントローラクラスです。

namespace app\index\controller;

class Index 
{
    public function index() { return 'hello,thinkphp!'; } } 

オペレーティング

コントローラは、操作(メソッド)を複数含む、動作方法は、アクセスURLの最小単位です。

以下は典型的であるIndexコントローラ定義された操作方法は、動作の2つのメソッドが含まれています。

namespace app\index\controller;

class Index 
{
    public function index() { return 'index'; } public function hello($name) { return 'Hello,'.$name; } } 

非オプションのパラメータの定義は、パラメータは、ユーザの要求によって渡される場合、操作の方法は、要求がURLである場合、それは通常、任意のパラメータを使用しないことがあり$_GET、または$_POSTモード合格。

モデル

モデルクラスは通常、実際のビジネス・ロジックとデータのカプセル化、およびフォーマットを行って、独立したデータを返しています。

モデルクラスがデータベースにアクセスする必要はありませんが、また、5.0アーキテクチャの設計では、唯一の実際のデータベースクエリは、データベースに接続されますと、接続が真に不活性です。
ThinkPHPモデル層は、多層設計をサポートし、あなたがより洗練されたデザインとモデル層の分割を行うことができ、例えば、モデル層は、その上の論理層/サーバー層/イベント層、及びに分かれています。

ビュー

これは、クラスモデルコントローラは、異なるフォーマットの出力データにビューを介して呼び出し返します。テンプレートエンジンは、コンテンツ出力または直接出力を解析して呼び出すことを決定するために、さまざまなニーズに応じて表示します。

ビューは、通常の操作や制御の異なる方法に対応したテンプレートファイルのシリーズを持っているし、動的設定テンプレートディレクトリをサポートしています。

ドライブ

システムの構成部品の多くは、より柔軟な拡張することができ駆動設計を、使用され、ドライブのデフォルトの位置は、コアライブラリカタログに次のように入力し、あなたは、ドライブのライブラリを変更するには、ドライブの名前空間のファイルの位置を再定義することができます。

行動

いくつかの操作を実行するアプリケーションの所定の位置における挙動(動作)。同様にAOP特定のセクションに関連する行動へのプログラミングの「アスペクト」、バインドの概念が種類となっているAOPプログラミングのアイデアの。したがって、動作は通常位置と実行時間に関連する位置に結合している行動に依存します。

動作を実行するには、まず、たとえば、アプリケーション内でリスナーを実施する必要があります。

// 在app_init位置侦听行为
\think\Hook::listen('app_init'); 

そして、どこかに結合行動:

// 绑定行为到app_init位置
\think\Hook::add('app_init','\app\index\behavior\Test'); 

あなたが行為の数の位置をバインドする場合は、ときに中断を除いて、結合順序で実行。

名前空間

ThinkPHP5使用するPHP名前空間ライブラリー設計と計画文書を、とに沿ってPSR-4自動負荷仕様。

おすすめ

転載: www.cnblogs.com/furuihua/p/11543068.html