この機能は PHP5.0x で提案されましたが、後にキャンセルされ、PHP6 で実装される予定でした。そして今回、PHP5.3が再び「予定より前倒し」でリリースされたことは、開発者がPHP5.3を非常に重要視しており、慎重であることを示しています。
正式にリリースされた時点ではドキュメントの内容が古くなっている可能性があるため、ここで名前空間の使用法を簡単に説明します。 まず、名前空間を宣言し、新しいキーワード名前空間を追加します。これはクラス ファイル内に存在する必要があります。先頭のコードをコピーします
コードは次のとおりです:
namespace Project::Module;
class User {
const STATUS_OK = true;
} Module::User();
$user->register($reg) ister_info);
は確かにいつもと同じですが、2 つの独立したクラスを接続できます。たとえば
コードをコピーします
コードは次のとおりです:
Project::Module::User; Project::Module::Blog;これにより、変数と変数間の関係を簡単に説明して理解できるようになります。クラスを言語自体の関係から切り離すことで、Project_Module_Blog の「従来の」長い命名方法を回避できます。
上記の説明では、名前空間を使用する利点を説明するのが難しいかもしれません。新しく追加された と をキーワードとして使用すると、問題をよりよく説明できるかもしれません。および as ステートメントを使用すると、名前空間の「エイリアス」を参照および宣言できます。たとえば、上記のコントローラーでクラスをインスタンス化するコードは次のように記述できます
コードをコピーします
コードは次のとおりです:
use Project::Module; $user = new Module::User(); $user->register($register_info);
さえ
コードをコピーします
コードは次のとおりです:
use Project::Module::User as 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_SEパラメータ、$ クラス名 ) ; require_once ( dirname( __FILE__ ) . '/' . $classname . '.class.php' ); } このように、例えば
を呼び出します。
コードをコピーします
コードは次のとおりです:
__autoload('Project::Module::User');
Project_Module_User.class.php ファイルを自動的にロードできます (ただし、これは不便に見えます)。
http://www.bkjia.com/PHPjc/781812.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/781812.html技術記事この機能は PHP5.0x で提案されましたが、後に中止され、PHP6 で実装される予定でした。そして今回も PHP5.3 が「予定より前倒し」でリリースされました。これは開発者が PHP5.3 を非常に重視していることを示しています...