學完namespace
,順手來個命名空間的小總結。
1.命名空間的使用目的
在PHP
函數
、
類別
常數是不允許同名的。為了解決這三者的同名問題,所以出現了命名空間,故而命名空間只影響類別、函數、常數
(const)。
2.命名空間的使用格式
<pre class="brush:php;toolbar:false"> <?php
namespace space1;//namespace关键字+空间名
代码;
?></pre>
<?php namespace space1;//namespace关键字 +空间名 代码1; namespace space2; 代码2; namespace space3; 代码3; .......//代码1,代码2,代码3,可相同亦可不同 ....... ?>注意事項:如果一個php檔案中,第一個空間的定義義必須放在第1行。不過凡事都有例外,在聲明命名空間之前還有唯一合法的程式碼是用來定義原始檔編碼方式的
declare 語句。所有非 PHP 程式碼包括空格符都不能出現在命名空間的宣告之前。例如下面的程式碼會報錯。
<html> <?php namespace space1; namespace space2; ?> </html>
3.命名空間的存取
命名空間的存取分為:非限定空間存取,限定空間存取
,完全限定空間存取。
<?php
namespace space3;
function f1(){
echo "space3";
}
namespace space3\space2;//其中"\"代表space2是space3的子空间,同理space3是space2的父空间。
function f1(){
echo "space2";
}
namespace space3\space2\space1;
function f1(){
echo "space1";
}
f1();//对上面空间成员进行访问,输出结果为:space1
?>
<?php namespace space2\space1; function f1(){ echo "space1"; } namespace space2; function f1(){ echo "space2"; } f1();//此时输出的是 space2 space1\f1();//此时输出的是space1 ?>
限定空間存取#<pre class="brush:php;toolbar:false;"><?php
namespace space3;
function f1(){
echo "space3";
}
namespace space2;
function f1(){
echo "space2";
}
namespace space1;
function f1(){
echo "space1";
}
f1();//对上面空间成员进行访问,输出结果为:space1
\space3\f1();//对space3进行访问,输出结果为:space3
\space2\f1();//对space2进行访问,输出结果为:space2
?></pre>
.完全限定空間存取
<?php namespace space3; function f1(){ echo "space3"; } //当前所有访问如果使用非限定名称都代表访问当前空间内的元素 f1();//访问space3下f1()函数 //想要访问函数 define('PI',3.14);//space3下没有define()函数,全局函数有 //想要访问系统常量 echo PHP_VERSION; //space3下没有define()函数,全局函数有 //想要访问类 //错误方案 //$m=new Mysqli('localhost','root','root');//系统会提示类不存在 //正确方案 $m= new \Mysqli('localhost','root','root'); ?>
4.引入空間成員
a.
# 空間名稱\空間名【as 別名】:將指定空間引入目前空間。同可以使用as關鍵字為被引入的空間起個別名
b.use
空間名稱\空間名稱\成員類別【#5.一些小情況
先在自己空間內找出
其次在如果找不到元素,不同空間元素的處理方式不同
系統常數,系統函數若找不到,會全域空間去找
系統類別是不會自動去全域空間去找的(報錯,提示空間找不到)
以上是無限娃娃,namesapce的命名之路的詳細內容。更多資訊請關注PHP中文網其他相關文章!