php的命名空間

2021-09-06 13:46:28 字數 1982 閱讀 6240

允許通過別名引用或匯入外部的完全限定名稱,是命名空間的乙個重要特徵。這有點類似於在類 unix 檔案系統中可以建立對其它的檔案或目錄的符號連線。

php 命名空間支援 有兩種使用別名或匯入方式:為類名稱使用別名,或為命名空間名稱使用別名。注意php不支援匯入函式或常量。

useexample #1 使用use操作符匯入/使用別名

<?php

namespace foo;

use my\full\classname as

another;

//下面的例子與 use my\full\nsname as nsname 相同

usemy\full\nsname;

//匯入乙個全域性類

use\arrayobject;

$obj = new namespace\another; //

例項化 foo\another 物件

$obj = new another; //

例項化 my\full\classname 物件

nsname\subns\func(); //

呼叫函式 my\full\nsname\subns\func

$a = new arrayobject(array(1)); //

例項化 arrayobject 物件

// 如果不使用 "use \arrayobject" ,則例項化乙個 foo\arrayobject 物件

?>

foo\bar

foobar

)來說,前導的反斜槓是不必要的也不允許有反斜槓,因為匯入的名稱必須是完全限定的,不會根據當前的命名空間作相對解析。

example #2 通過use操作符匯入/使用別名,一行中包含多個use語句

<?php

use my\full\classname as another,my\full\nsname;

$obj = new another; //

例項化 my\full\classname 物件

nsname\subns\func(); //

呼叫函式 my\full\nsname\subns\func

?>

匯入操作是在編譯執行的,但動態的類名稱、函式名稱或常量名稱則不是。

example #3 匯入和動態名稱

<?php

use my\full\classname as another,my\full\nsname;

$obj = new another; //

例項化乙個 my\full\classname 物件

$a = 'another';

$obj = new

$a; //

實際化乙個 another 物件

?>

另外,匯入操作只影響非限定名稱和限定名稱。完全限定名稱由於是確定的,故不受匯入的影響。

example #4 匯入和完全限定名稱

<?php

use my\full\classname as another,my\full\nsname;

$obj = new another; //

instantiates object of class my\full\classname

$obj = new \another; //

instantiates object of class another

$obj = new another\thing; //

instantiates object of class my\full\classname\thing

$obj = new \another\thing; //

instantiates object of class another\thing

?>

php 命名空間,PHP使用命名空間

介紹 命名空間中的類,函式或常量可以通過以下方式使用 在當前命名空間中使用類 指定相對於當前命名空間的命名空間 提供命名空間的全限定名稱 從當前命名空間 在此示例中,從test1.php載入了命名空間。沒有命名空間引用的函式或類名稱將訪問當前命名空間中的功能或類名稱 示例 test1.php nam...

PHP的命名空間

php的命名空間 namespace 是php5.3之後才有的。這個概念在c 中已經很早就有了,php中的namespace其實和c 的概念是一樣的。假設如果不使用namespace,那麼每個類在乙個專案中的名字就必須是固定的。因為php在new的時候不管是呼叫autoload還是呼叫已載入過的類,...

PHP的命名空間

php的命名空間 namespace 是php5.3之後才有的。這個概念在c 中已經很早就有了,php中的namespace其實和c 的概念是一樣的。假設如果不使用namespace,那麼每個類在乙個專案中的名字就必須是固定的。因為php在new的時候不管是呼叫autoload還是呼叫已載入過的類,...