91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區別

發布時間:2021-09-13 17:36:50 來源:億速云 閱讀:120 作者:chen 欄目:大數據

這篇文章主要介紹“PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區別”,在日常操作中,相信很多人在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()
     

非限定名稱、限定名稱、完全限定名稱

不要被術語嚇到,這三個術語其實非常好理解。

  • 非限定名稱,名稱中不包含命名空間分隔符的標識符,例如 Foo 。
  • 限定名稱,名稱中含有命名空間分隔符的標識符,例如 Foo\Bar 。
  • 名稱中包含命名空間分隔符,并以命名空間分隔符開始的標識符,例如 \Foo\Bar。namespace\Foo 也是一個完全限定名稱。

直接用例子來說就非常清晰了。

// 非限定名稱、限定名稱、完全限定名稱
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
   

namespace關鍵字和__NAMESPACE__常量

  • namesapce,顯式訪問當前命名空間或子命名空間中的元素。它等價于類中的 self 操作符。
  • NAMESPACE,包含當前命名空間名稱的字符串。在全局的,不包括在任何命名空間中的代碼,它包含一個空的字符串。

也是很簡單的內容吧,直接來看例子。

// 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中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

西林县| 商洛市| 新化县| 邯郸县| 吴川市| 平邑县| 石台县| 鹰潭市| 石河子市| 大邑县| 望谟县| 北海市| 张家界市| 莆田市| 花莲县| 潮州市| 辽宁省| 楚雄市| 萝北县| 三门峡市| 开鲁县| 大竹县| 枣强县| 那坡县| 阿图什市| 平阴县| 正阳县| 博白县| 阳朔县| 城固县| 梓潼县| 米脂县| 沙坪坝区| 独山县| 治县。| 图们市| 咸丰县| 舟山市| 马边| 鲁山县| 武清区|