ホームページ >バックエンド開発 >PHPチュートリアル >thinkPHP5.0 フレームワークの全体的なアーキテクチャの詳細な概要

thinkPHP5.0 フレームワークの全体的なアーキテクチャの詳細な概要

黄舟
黄舟オリジナル
2017-03-27 09:17:372905ブラウズ

この記事では、主に thinkPHP5.0 フレームワークの全体的なアーキテクチャを紹介し、thinkPHP5.0 アプリケーション、モジュール、MVC、ドライバー、動作、名前空間 などの概念と基本的な使用法を簡単に紹介します。参考にしてください 次へ

この記事では、thinkPHP5.0 フレームワークの全体的なアーキテクチャについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

ThinkPHP5.0 アプリケーションは MVC (Model-View-Controller) に基づいて構成されています。

MVC は、アプリケーションの入力、処理、出力の分離を強制する設計パターンです。 MVC を使用するアプリケーションは、モデル (M)、ビュー (V)、およびコントローラー (C) の 3 つのコア コンポーネントに分割されており、それぞれが独自のタスクを処理します。

5.0 の URL アクセス は、ルーティングがオフになっている場合、または一致するルートがない場合、

serverName/index.php (または 他のアプリケーション エントリ ファイル)/ に基づいて決定されます。 module/controller /Operation/Parameter/Value...

以下の概念のいくつかは理解する必要があり、以下のコンテンツで頻繁に言及される可能性があります。

エントリ ファイル

ユーザーによってリクエストされた PHP ファイル。リクエストの ライフ サイクル の処理を​​担当します (必ずしも URL リクエストである必要はないことに注意してください)。最も一般的なエントリ ファイルは index.php、バックグラウンド モジュール <code>admin.php またはコントローラ プログラム エントリ think の別個のエントリ ファイルなど、特別なニーズのために新しいエントリ ファイルが追加される場合があります。すべてが属しますエントリーファイルに。 index.php,有时候也会为了某些特殊的需求而增加新的入口文件,例如给后台模块单独设置的一个入口文件admin.php或者一个控制器程序入口think都属于入口文件。

应用

应用在ThinkPHP中是一个管理系统架构及生命周期的对象,由系统的 thinkApp类完成,应用通常在入口文件中被调用和执行,具有相同的应用目录(APP_PATH

アプリケーション

ThinkPHP のアプリケーションは、システム アーキテクチャとライフサイクルを管理するオブジェクト です。アプリケーションは通常、エントリ ファイル内で呼び出され、実行されます。同じアプリケーション ディレクトリ (APP_PATH) を持つアプリケーションは同じアプリケーションであると見なされます。ただし、アプリケーションには複数のエントリ ファイルがある場合があります。

アプリケーションには、独自の独立した設定ファイルとパブリック (関数) ファイルがあります。

モジュール

通常、これらのモジュールは、アプリケーション ディレクトリの下にあるサブディレクトリであり、各モジュールには独自の独立した設定ファイル、パブリック ファイル、および

クラス ライブラリ

ファイルがあります。

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

:

&#39;app_multi_module&#39; =>  false,

Controller

各モジュールには独立したモジュールがあります。 MVC クラス ライブラリと構成ファイルでは、リクエストへの応答を担当する 1 つのモジュールの下に複数のコントローラーがあり、各コントローラーは実際には独立したコントローラー クラスです。

コントローラーは主に、リクエストの受信、関連するモデル処理の呼び出し、そして最終的にビューを介した出力を担当します。厳密に言えば、コントローラーはビジネス ロジックの処理にあまり関与すべきではありません。

実際、5.0 ではコントローラーをスキップでき、ルーティングを通じてリクエストを特定のモデルまたは他のクラスに直接ディスパッチして処理できます。

5.0 のコントローラー クラスはより柔軟であり、基本的なクラス ライブラリを継承する必要がありません。

代表的な Index コントローラー クラスは次のとおりです。

namespace app\index\controller;
class Index 
{
  public function index()
  {
    return &#39;hello,thinkphp!&#39;;
  }
}

Operation

コントローラーには複数の操作 (メソッド) が含まれており、操作メソッドは URL アクセスの最小単位です。 以下は、2 つの操作メソッドを含む一般的な Index コントローラー操作メソッドの定義です。

namespace app\index\controller;
class Index 
{
  public function index()
  {
    return &#39;index&#39;;
  }
  public function hello($name)
  {
    return &#39;Hello,&#39;.$name;
  }
}

操作メソッドではパラメーターを使用できません。オプション以外のパラメーターが定義されている場合、そのパラメーターはユーザー リクエストを通じて渡される必要があります。これは URL リクエストであり、通常は $_GET または $_POST 経由で渡されます。

Model

Model クラス
は通常、実際のビジネス ロジックとデータのカプセル化を完了し、形式に依存しないデータを返します。

🎜モデル クラスは必ずしもデータベースにアクセスする必要はなく、5.0 アーキテクチャ設計では、実際のデータベース 🎜query🎜 操作が実行されるときにのみデータベース接続が行われます。これは真の遅延接続です。 🎜🎜🎜

ThinkPHP的模型层支持多层设计,你可以对模型层进行更细化的设计和分工,例如把模型层分为逻辑层/服务层/事件层等等。

视图

控制器调用模型类后返回的数据通过视图组装成不同格式的输出。视图根据不同的需求,来决定调用模板引擎进行内容解析后输出还是直接输出。

视图通常会有一系列的模板文件对应不同的控制器和操作方法,并且支持动态设置模板目录。

驱动

系统很多的组件都采用驱动式设计,从而可以更灵活的扩展,驱动类的位置默认是放入核心类库目录下面,也可以重新定义驱动类库的命名空间而改变驱动的文件位置。

行为

行为(Behavior)是在预先定义好的一个应用位置执行的一些操作。类似于AOP编程中的“切面”的概念,给某一个切面绑定相关行为就成了一种类AOP编程的思想。所以,行为通常是和某个位置相关,行为的执行时间依赖于绑定到了哪个位置上。

要执行行为,首先要在应用程序中进行行为侦听,例如:

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

然后对某个位置进行行为绑定:

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

一个位置上如果绑定了多个行为的,按照绑定的顺序依次执行,除非遇到中断。

命名空间

ThinkPHP5采用了PHP的命名空间进行类库文件的设计和规划,并且符合PSR-4自动加载规范。

以上がthinkPHP5.0 フレームワークの全体的なアーキテクチャの詳細な概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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