thinkPHP5.0 フレームワークの全体的なアーキテクチャの詳細な概要
この記事では、主に 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 つしかない場合、このモジュールのサブディレクトリを省略して、アプリケーション構成ファイル内で変更できます:
'app_multi_module' => false,
各モジュールには独立したモジュールがあります。 MVC クラス ライブラリと構成ファイルでは、リクエストへの応答を担当する 1 つのモジュールの下に複数のコントローラーがあり、各コントローラーは実際には独立したコントローラー クラスです。
コントローラーは主に、リクエストの受信、関連するモデル処理の呼び出し、そして最終的にビューを介した出力を担当します。厳密に言えば、コントローラーはビジネス ロジックの処理にあまり関与すべきではありません。
実際、5.0 ではコントローラーをスキップでき、ルーティングを通じてリクエストを特定のモデルまたは他のクラスに直接ディスパッチして処理できます。5.0 のコントローラー クラスはより柔軟であり、基本的なクラス ライブラリを継承する必要がありません。
代表的な Index コントローラー クラスは次のとおりです。
namespace app\index\controller; class Index { public function index() { return 'hello,thinkphp!'; } }
コントローラーには複数の操作 (メソッド) が含まれており、操作メソッドは URL アクセスの最小単位です。 以下は、2 つの操作メソッドを含む一般的な Index コントローラー操作メソッドの定義です。
namespace app\index\controller; class Index { public function index() { return 'index'; } public function hello($name) { return 'Hello,'.$name; } }
操作メソッドではパラメーターを使用できません。オプション以外のパラメーターが定義されている場合、そのパラメーターはユーザー リクエストを通じて渡される必要があります。これは URL リクエストであり、通常は $_GET または $_POST 経由で渡されます。
ModelModel クラス
は通常、実際のビジネス ロジックとデータのカプセル化を完了し、形式に依存しないデータを返します。
ThinkPHP的模型层支持多层设计,你可以对模型层进行更细化的设计和分工,例如把模型层分为逻辑层/服务层/事件层等等。
视图
控制器调用模型类后返回的数据通过视图组装成不同格式的输出。视图根据不同的需求,来决定调用模板引擎进行内容解析后输出还是直接输出。
视图通常会有一系列的模板文件对应不同的控制器和操作方法,并且支持动态设置模板目录。
驱动
系统很多的组件都采用驱动式设计,从而可以更灵活的扩展,驱动类的位置默认是放入核心类库目录下面,也可以重新定义驱动类库的命名空间而改变驱动的文件位置。
行为
行为(Behavior)是在预先定义好的一个应用位置执行的一些操作。类似于AOP编程中的“切面”的概念,给某一个切面绑定相关行为就成了一种类AOP编程的思想。所以,行为通常是和某个位置相关,行为的执行时间依赖于绑定到了哪个位置上。
要执行行为,首先要在应用程序中进行行为侦听,例如:
// 在app_init位置侦听行为 \think\Hook::listen('app_init');
然后对某个位置进行行为绑定:
// 绑定行为到app_init位置 \think\Hook::add('app_init','\app\index\behavior\Test');
一个位置上如果绑定了多个行为的,按照绑定的顺序依次执行,除非遇到中断。
命名空间
ThinkPHP5采用了PHP的命名空间进行类库文件的设计和规划,并且符合PSR-4
的自动加载规范。
以上がthinkPHP5.0 フレームワークの全体的なアーキテクチャの詳細な概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。
