溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

namespace和use怎么在php中使用

發(fā)布時(shí)間:2021-04-01 17:02:43 來源:億速云 閱讀:116 作者:Leah 欄目:開發(fā)技術(shù)

namespace和use怎么在php中使用?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

namespace(以下簡稱ns)。在定義了一個(gè)ns之后,下面所申明的class、interface、const(不包含variable)都是在申明的ns這個(gè)“域”里面的。當(dāng)引用一個(gè)申明了ns的包含文件,想要調(diào)用這個(gè)ns里面的東西,那必須調(diào)整當(dāng)前腳本也到此ns域,否則就得用全稱()包含ns全稱):

// inc.php
namespace Foo;
class Bar {}
// 訪問Foo的第一種方法,用全稱
require 'inc.php';
$foo = new \Foo\Bar();
// 訪問Foo的第二種方法
namespace Foo; // 調(diào)整當(dāng)前腳本到Foo這個(gè)ns域,而且namespace申明必須在第一句
require 'inc.php';
$foo = new Bar();

use關(guān)鍵字目的是使用ns的別名:

// 比如
use A\Very\Long\Namespace as Ns;
// 這樣就可以用Ns來代替A/Very/Long/Namespace這個(gè)ns下定義的東西
$foo = new Ns\Foo();

但是在一些開源項(xiàng)目里面經(jīng)常會(huì)看到use Ns\Component這樣的用法,沒有用as,這讓我以前一直在思考use是否還有第二種用法,糟糕的是php的文檔里面也沒有對(duì)此用法有描述,只能靠猜測(cè),后來仔細(xì)想過這個(gè)問題,得出一個(gè)比較靠譜的結(jié)論是use可以省略as以及后面的別名而直接把ns最后一個(gè)節(jié)點(diǎn)的名字當(dāng)作別名,感覺是不是很像ln -s命令的用法呢:

// 第三種用法
require 'inc.php';
use Foo\Bar; // 這樣Bar就等于Foo\Bar了
$foo = new Bar();

關(guān)于namespace和use怎么在php中使用問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI