この記事の例では、thinkphp 名前空間の使用法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
新しいバージョン (3.2) は、名前空間を使用してクラス ライブラリ ファイルを定義およびロードし、複数のモジュール間の競合を解決し、より効率的な自動ロード メカニズムを実装します。
クラスが自動的にロードされるように、クラス ライブラリが配置される名前空間を定義する必要があります。たとえば、OrgUtilFile クラスは
として定義されます。namespace Org\Util; class File { }
それが配置されているパスは ThinkPHP/Library/Org/Util/File.class.php です。このクラスを次のようにインスタンス化します:
コードをコピーします コードは次のとおりです:
$ class = new OrgUtilFile();
ルート名前空間は非常に重要な概念です。例として上記の OrgUtilFile クラスを取り上げます。Org はルート名前空間であり、それに対応する初期名前空間ディレクトリはシステムのクラス ライブラリ ディレクトリである ThinkPHP/Liberary であり、これは次のレベルのサブディレクトリです。ディレクトリはルート名前空間として自動的に認識され、これらの名前空間は登録なしで使用できます。
Library ディレクトリの下に新しい My root 名前空間ディレクトリを追加し、次のように Test クラスを定義します:
namespace My; class Test { public function sayHello() { echo 'hello'; } }
テスト クラスを ThinkPHP/Liberary/My/Test.class.php に保存すると、インスタンス化できます。
$Test = new \My\Test(); $Test->sayHello();
モジュールのクラスライブラリ名前空間は、モジュール名に基づいて名前が付けられます。例:
namespace Home\Model; class UserModel extends \Think\Model { }
そのクラスファイルは、Application/Home/Model/UserModel.class.php
namespace Admin\Event; class UserEvent { }
そのクラス ファイルは Application/Admin/Event/UserEvent.class.php にあります
3.2.1 以降では、アプリケーション クラス ライブラリに名前空間を使用しない設定が可能です。 設定ファイルの設定は次のとおりです。
コードをコピーしますコードは次のとおりです:
'APP_USE_NAMESPACE' => false,
class UserModel extends \Think\Model { }
を書きません。特別な注意: PHP の組み込みクラス ライブラリ、または を使用して定義されていないサードパーティ クラスをインスタンス化する必要がある場合。バージョン 3.2 の名前空間を使用するには、次のメソッドを使用する必要があります:
$class = new \stdClass(); $sxml = new \SimpleXmlElement($xmlstr);
この記事で説明した内容が、thinkPHP フレームワークに基づいた PHP プログラミングの皆様のお役に立てれば幸いです。
以上、thinkphp の名前空間の使用例を内容も含めて詳しく紹介しましたので、PHP チュートリアルに興味のある方の参考になれば幸いです。