この記事では主に thinkphp 名前空間の使用法を紹介し、thinkPHP 名前空間の機能と具体的な使用テクニックを例の形で詳しく分析します。必要な方は以下を参照してください。
この例は次のとおりです。 thinkphp 名前空間の使用法についての記事を参照してください。参考のために皆さんと共有してください。詳細は次のとおりです。
新バージョン (3.2) では、クラス ライブラリ ファイルの定義とロードに名前空間メソッドを採用し、複数のモジュール間の競合の問題を解決し、より多くの機能を実現します。効率的な自動ローディング機構。
クラスを自動的にロードできるように、クラス ライブラリが配置される名前空間を定義する必要があります。名前空間のパスはクラス ライブラリ ファイルのディレクトリと一致します。 Util\File クラスは
namespace Org\Util; class File { }
として定義されます。このクラスが配置されるパスは ThinkPHP/Library/Org/Util/File.class.php です。このクラスを次のようにインスタンス化します。システムは上記のファイルを自動的にロードするため、それをインスタンスに追加する必要はありません。クラス ライブラリ ファイルは、名前空間で定義されたクラスの前にインポートされます。
ルート名前空間は非常に重要な概念です。例として上記の Org\Util\File クラスを取り上げます。Org はルート名前空間であり、それに対応する初期名前空間ディレクトリはシステムのクラス ライブラリ ディレクトリです。このディレクトリの下のサブディレクトリはルート名前空間として自動的に認識され、これらの名前空間は登録なしで使用できます。
Library ディレクトリの下に My root 名前空間ディレクトリを追加し、次のように Test クラスを定義します。
$class = new \Org\Util\File();
テスト クラスを ThinkPHP/Liberary/My/Test.class.php に保存します。
namespace My; class Test { public function sayHello() { echo 'hello'; } }
でクラス ライブラリの名前空間を直接インスタンス化して呼び出すことができます。モジュールはモジュール名に基づいて名前が付けられます。例:
$Test = new \My\Test(); $Test->sayHello();
そのクラス ファイルは Application/Home/Model/ にあります。 UserModel.class.php
namespace Home\Model; class UserModel extends \Think\Model { }
クラス ファイルは Application/Admin/Event/UserEvent.class.php
3.2.1 以降では、アプリケーションの名前空間を使用しない設定が可能ですクラス ライブラリ、構成ファイル内 設定は次のとおりです。
namespace Admin\Event; class UserEvent { }
このようにして、アプリケーション クラス ライブラリでは名前空間の定義が不要になりますが、継承や継承の際には引き続き名前空間を使用する必要があります。たとえば、次のアプリケーション クラス ライブラリは、名前空間 Admin\Model;
'APP_USE_NAMESPACE' => false,
を記述しません。特記事項: PHP の組み込みクラス ライブラリまたはサードパーティ クラスをインスタンス化する必要がある場合。バージョン 3.2 では名前空間を使用して定義されていない場合は、次のメソッドを使用する必要があります。
class UserModel extends \Think\Model { }
以上がこの記事の全内容であり、その他の関連コンテンツについても参考になれば幸いです。 、PHP 中国語 Web サイトに注意してください。
関連する推奨事項:
thinkPHP5.0 フレームワーク全体のアーキテクチャの概要 [アプリケーション、モジュール、MVC、ドライバー、動作、名前空間など]thinkPHPのHTMLテンプレートタグの使用方法以上がthinkphp での名前空間の使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。