PHP 5.3 の重要な新機能はネームスペースです。
この機能は PHP5.0x で提案されましたが、後に中止され、PHP6 で実装される予定でした。そして今回、PHP5.3が再び「予定より前倒し」でリリースされたことは、開発者がPHP5.3を非常に重要視しており、慎重であることを示しています。
正式にリリースされると、ドキュメントの内容が古くなっている可能性があります (ドキュメントが古い可能性があります)。そこで、名前空間の使用法を簡単に説明します。まず、名前空間を宣言し、新しいキーワード名前空間を追加します。クラスファイルの先頭
<?phpnamespace Project::Module;class User {const STATUS_OK = true;function register($data) {...}...} 次に、コントローラー (おそらく他のファイル) で
$ を
呼び出すことができますuser = new このように Project::Module::User();$user->register($register_info); は確かに通常と同じですが、2 つの独立したクラスを接続できます。たとえば、
Project::Module::User;Project::Module::Blog; これにより、変数とクラスの関係を言語自体から簡単に説明して理解できるようになり、 Project_Module_Blog という「従来の」長い名前付け方法を回避できます。
上記の説明では、名前空間を使用する利点を説明するのが難しい場合があります。キーワードとして と を新たに追加すると、問題がよりわかりやすく説明される可能性があります。 use および as ステートメントは、名前空間の「エイリアス」を参照および宣言できます。たとえば、上記のコントローラーでクラスをインスタンス化するコードは次のように記述できます。
use Project::Module;$user = new Module::User();$user->register($register_info); または
use Project ::Module:: User as ModuleUser;$user = new ModuleUser;$user->register($register_info);クラス内の定数には、名前空間を通じてアクセスすることもできます。たとえば、上記のクラスの STATUS_OK には、名前空間
Project::Module::User: :STATUS_OK アクセス。さらに、エイリアスを使用して、このような長い「変数名」を簡素化することもできます。
use Project::Module::User::STATUS_OK as STATUS_OK;echo STATUS_OK; ちなみに、「グローバル名前空間」の概念。いわゆる「ハイパースペース」とは、指定された名前空間を持たない変数、クラス、関数を指します。たとえば
、function foo() {...} のような関数は、foo() または ::foo(); を使用して実行できます。
最後に、autoload 関数を使用して、指定した名前空間にクラスをロードします。単純な関数は次のとおりです
function __autoload( $classname ) {$classname = strto lower( $classname );$classname = str_replace( '::', DIRECTORY_SEPARATOR, $classname );require_once( dirname( __FILE__ ) . '/' . $ classname . '.class.php' );} この方法では、たとえば
__autoload('Project::Module::User'); を呼び出すと、Project_Module_User.class.php ファイルを自動的にロードできます (これは不便に見えますが)。