您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區別”,在日常操作中,相信很多人在PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區別”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
命名空間本身就像目錄一樣,所以命名空間當然也是可以定義子命名空間的,真的就和操作系統的各種目錄層級是完全一樣的。我們通過簡單的例子來看看。首先還是創建三個php文件,其中3-2和3-2-1是使用的相同的二級命名空間,3-2-1在FILE32的基礎上繼續向下擴展了第三級的命名空間FILE321。他們都是MyProject命名空間的子命名空間。
// file3-1.php
namespace MyProject\FILE31;
function testA31(){
echo 'FILE31\testA()', PHP_EOL;
}
// file3-2.php
namespace MyProject\FILE32;
const CONST_A32 = "file3-2";
function testA32(){
echo 'FILE32\testA()', PHP_EOL;
}
class objectA32{
function test(){
echo 'FILE32\ObjectA', PHP_EOL;
}
}
// file3-2-1.php
namespace MyProject\FILE32\FILE321;
function testA321(){
echo 'FILE321\testA()', PHP_EOL;
}
接下來的使用就很簡單了,和使用一級命名空間一樣,直接使用use進行導入就可以了。
// 子命名空間
require 'namespace/file3-1.php';
require 'namespace/file3-2.php';
require 'namespace/file3-2-1.php';
use MyProject\FILE31;
use MyProject\FILE32;
use MyProject\FILE32\FILE321;
FILE31\testA31(); // FILE31\testA()
FILE32\testA32(); // FILE32\testA()
FILE32\FILE321\testA321(); // FILE321\testA()
FILE321\testA321(); // FILE321\testA()
PHP是允許在一個文件中定義多個命名空間的,但是并不推薦這么做,因為這樣可能會帶來各種未知的混亂。在這里,我們只要了解到可以這樣使用就行了,在日常的開發中還是盡量要避免。
// file4.php
namespace FILE41;
function testA41(){
echo 'FILE41\testA()', PHP_EOL;
}
namespace FILE42;
function testA42(){
echo 'FILE42\testA()', PHP_EOL;
}
在使用中當然也和其他命名空間的使用沒什么兩樣,直接use使用即可。
// 一個文件中多個命名空間
require 'namespace/file4.php';
use FILE41, FILE42;
FILE41\testA41(); // FILE41\testA()
FILE42\testA42(); // FILE42\testA()
不要被術語嚇到,這三個術語其實非常好理解。
直接用例子來說就非常清晰了。
// 非限定名稱、限定名稱、完全限定名稱
use MyProject\FILE32\objectA32 as obj32;
$o = new obj32(); // 非限定名稱
$o->test(); // FILE32\ObjectA
$o = new FILE32\objectA32(); // 限定名稱
$o->test(); // FILE32\ObjectA
$o = new \MyProject\FILE32\objectA32(); // 完全限定名稱
$o->test(); // FILE32\ObjectA
也是很簡單的內容吧,直接來看例子。
// file5.php
namespace FILE5;
function test(){
echo __NAMESPACE__ . ': test()', PHP_EOL;
}
// test.php
namespace Pro;
// namespace與__NAMESPACE__
require 'namespace/file5.php';
function test(){
echo __NAMESPACE__ . ': test()', PHP_EOL;
}
namespace\test(); // Pro: test()
\FILE5\test(); // FILE5: test()
到此,關于“PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。