ホームページ >バックエンド開発 >PHPチュートリアル >thinkPHP5.0フレームワークの自動読み込みメカニズムの詳細な分析
この記事では、主に thinkPHP5.0 フレームワーク自動読み込みのメカニズムを紹介し、thinkPHP5.0 自動読み込みの概念、原理、使用法および関連する側面をより詳細に分析しますメモ。記事
thinkPHP5.0 フレームワークの自動読み込みメカニズムについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
概要
ThinkPHP5.0は真にオンデマンドロードを実現し、すべてのクラスライブラリは自動ロードメカニズムを採用し、クラスライブラリマッピングの自動ロードをサポートします。そしてコンポーザークラスライブラリ。
自動ローディングの実装は thinkLoader クラス ライブラリによって完了し、自動ローディングの仕様は PHP の PSR-4 に準拠しています。
自動読み込み
ThinkPHP の新しいバージョンは名前空間 機能を完全に採用しているため、必要なのはクラス ライブラリが配置されている名前空間を正しく定義することだけであり、名前空間のパスはクラス ライブラリのディレクトリと一致しています。クラス ライブラリ ファイルを作成すると、クラスの自動読み込みを実装できます。
クラス ライブラリの自動ロード検出の順序は次のとおりです:
1. クラス ライブラリ マッピングの検出
3. PSR-0 の自動ロード検出;検出されたら、有効になると、対応するクラス ライブラリ ファイルが自動的にロードされます。
クラスライブラリマッピング
上記の名前空間定義仕様に従えば、基本的にはクラスライブラリの自動読み込みを完了できますが、より多くの名前空間を定義すると効率が低下するため、クラスライブラリマッピングを定義することができます。一般的に使用されるクラス ライブラリ用。名前付きクラス ライブラリのマッピングは、クラス ファイルのエイリアスを定義することと同等であり、名前空間の配置よりも効率的です。例:
Loader::addClassMap('think\Log',LIB_PATH.'think\Log.php'); Loader::addClassMap('org\util\Array',LIB_PATH.'org\util\Array.php');また、addClassMap メソッドを使用してクラス ライブラリ マッピング定義をバッチでインポートすることもできます。例:
$map = [ 'think\Log' => LIB_PATH.'think\Log.php', 'org\util\array'=> LIB_PATH.'org\util\Array.php' ]; Loader::addClassMap($map);クラス ライブラリ マッピングを通じて、この方法で登録されたクラスは名前空間ディレクトリに対応する必要はありませんが、それでも PSR-4 仕様に従ってクラス ライブラリとディレクトリを定義することをお勧めします。
クラス ライブラリのインポート
システムの自動ロード機能が必要ない場合、または名前空間を使用しない場合は、thinkLoader クラスのインポート メソッドを使用してクラス ライブラリ ファイルを手動でロードすることもできます。 :
Loader::import('org.util.array'); Loader::import('@.util.upload');Example
// 引入 extends/qrcode.php Loader::import('qrcode', EXTEND_PATH); // 助手函数 import('qrcode', EXTEND_PATH); // 引入 extends/wechat-sdk/wechat.class.php Loader::import('wechat-sdk.wechat', EXTEND_PATH, '.class.php'); // 助手函数 import('wechat-sdk.wechat', EXTEND_PATH, '.class.php');クラス ライブラリのインポートでも同様の名前空間の概念が使用されます (ただし、実際の名前空間のサポートは必要ありません)。サポートされている「ルート名前空間」は次のとおりです。
目次 | 説明 |
---|---|
動作 | システム動作クラスライブラリ |
think | コア基本クラスライブラリ |
特性 | システム特性クラスライブラリ |
app | アプリケーションクラスライブラリ |
@ | は、現在のモジュールクラスライブラリパッケージを表します |
システムの名前空間定義に完全に準拠している場合、一般的に、クラス ライブラリ ファイルを手動でロードして直接インスタンス化する必要はありません。
Composer の自動ロード
バージョン 5.0 は、Composer によってインストールされたクラス ライブラリの自動ロードをサポートしており、Composer 依存ライブラリの名前空間に従ってそれらを直接呼び出すことができます。
以上がthinkPHP5.0フレームワークの自動読み込みメカニズムの詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。