這篇文章主要介紹“PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區(qū)別”,在日常操作中,相信很多人在PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區(qū)別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區(qū)別”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
為日照等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及日照網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、成都做網(wǎng)站、日照網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
命名空間本身就像目錄一樣,所以命名空間當(dāng)然也是可以定義子命名空間的,真的就和操作系統(tǒng)的各種目錄層級是完全一樣的。我們通過簡單的例子來看看。首先還是創(chuàng)建三個php文件,其中3-2和3-2-1是使用的相同的二級命名空間,3-2-1在FILE32的基礎(chǔ)上繼續(xù)向下擴展了第三級的命名空間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進行導(dǎo)入就可以了。
// 子命名空間
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是允許在一個文件中定義多個命名空間的,但是并不推薦這么做,因為這樣可能會帶來各種未知的混亂。在這里,我們只要了解到可以這樣使用就行了,在日常的開發(fā)中還是盡量要避免。
// file4.php
namespace FILE41;
function testA41(){
echo 'FILE41\testA()', PHP_EOL;
}
namespace FILE42;
function testA42(){
echo 'FILE42\testA()', PHP_EOL;
}
在使用中當(dāng)然也和其他命名空間的使用沒什么兩樣,直接use使用即可。
// 一個文件中多個命名空間
require 'namespace/file4.php';
use FILE41, FILE42;
FILE41\testA41(); // FILE41\testA()
FILE42\testA42(); // FILE42\testA()
不要被術(shù)語嚇到,這三個術(shù)語其實非常好理解。
直接用例子來說就非常清晰了。
// 非限定名稱、限定名稱、完全限定名稱
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
也是很簡單的內(nèi)容吧,直接來看例子。
// 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()
到此,關(guān)于“PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區(qū)別”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站名稱:PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區(qū)別
URL鏈接:http://www.chinadenli.net/article10/jiihgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、軟件開發(fā)、Google、關(guān)鍵詞優(yōu)化、網(wǎng)站建設(shè)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)