php命名空間在5.3中加入,主要是為了解決以下兩類問題:
使用者編寫的**與php內部的類/函式/常亮或第三方類/函式/常亮之間的名字衝突。
為長的識別符號名稱建立乙個別名,提高**的可讀性。
命名空間通過關鍵字namespace來宣告,如果乙個檔案中包含命名空間就必須在所有**之前宣告。
<?php
namespace
myproject
;//**
在乙個檔案中可以定義不同的空間**
<?php
namespace
myproject1
;const b;
functionc(
);}namespace
myproject2
;const b;
functionc(
);}namespace
在宣告命名空間之前的唯一合法**是用於定義原始檔編碼方式的declare語句。所有非php**包括空白字元都不能出現在命名空間的宣告之前。
declare
(encoding=
'utf-8'
);
命名空間的名字可以使用分層次的方式定義:
namespace
myproject\sub\level
;
有三種方式引入:
非限定名稱,或不包含字首的類名稱。
限定名稱,或包含字首的名稱。
完全限定名稱,或包含了全域性字首操作符的名稱。完全限定名稱,或包含了全域性字首操作符的名稱。
例項:file1.php
<?php
namespace
foo\bar\subnamespace
;const foo =1;
function
foo(
)class
foo}
file2.php
<?php
namespace
foo\bar\
const
foo=2;
function
foo(
)class
foo}
/*非限定名稱*/
foo();
//解析為函式 foo\bar\foo
foo:
:staticmethod()
;//解析為類 foo\bar\foo,方法為staticmethod
echo
foo;
//解析為常亮
/*限定名稱*/
subnamespace\foo()
;// 解析為函式 foo\bar\subnamespace\foo
subnamespace\foo::
staticmethod()
;// 解析為類 foo\bar\subnamespace\foo, 以及類的方法 staticmethod
echo subnamespace\foo
;// 解析為常量 foo\bar\subnamespace\foo
/*完全限定名稱*/
\foo\bar\foo()
;// 解析為函式 foo\bar\foo
\foo\bar\foo::
staticmethod()
;// 解析為類 foo\bar\foo, 以及類的方法 staticmethod
echo \foo\bar\foo
;// 解析為常量 foo\bar\foo
php 命名空間,PHP使用命名空間
介紹 命名空間中的類,函式或常量可以通過以下方式使用 在當前命名空間中使用類 指定相對於當前命名空間的命名空間 提供命名空間的全限定名稱 從當前命名空間 在此示例中,從test1.php載入了命名空間。沒有命名空間引用的函式或類名稱將訪問當前命名空間中的功能或類名稱 示例 test1.php nam...
php命名空間
namespace misszhou function var dump a 1 var dump var dump 1 表示呼叫全域性 解決常量的衝突問題 有點像子目錄的概念 namespace meizi 必須放第一行 include func.inc.php function one func...
php 命名空間
使用命名空間 別名 匯入,允許通過別名引用或匯入外部的完全限定名稱,是命名空間的乙個重要特徵。這有點類似於在類 unix 檔案系統中可以建立對其它的檔案或目錄的符號連線。所有支援命名空間的php版本支援三種別名或匯入方式 為類名稱使用別名 為介面使用別名或為命名空間名稱使用別名。php 5.6開始允...