国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

PHP填坑——命名空間

2019-11-08 02:08:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

php填坑——命名空間

測(cè)試環(huán)境 PHP version 5.3.29/5.6.29/7.1.0 Apache 2.4.25

在PHP中,命名空間用來(lái)解決在編寫(xiě)類(lèi)庫(kù)或應(yīng)用程序時(shí)創(chuàng)建可重用的代碼如類(lèi)或函數(shù)時(shí)碰到的兩類(lèi)問(wèn)題:

用戶(hù)編寫(xiě)的代碼與PHP內(nèi)部的類(lèi)/函數(shù)/常量或第三方類(lèi)/函數(shù)/常量之間的名字沖突。 為很長(zhǎng)的標(biāo)識(shí)符名稱(chēng)(通常是為了緩解第一類(lèi)問(wèn)題而定義的)創(chuàng)建一個(gè)別名(或簡(jiǎn)短)的名稱(chēng),提高源代碼的可讀性。<?php namespace NS; define(__NAMESPACE__ .'/foo','111'); define('foo','222'); echo foo; // 111. echo /foo; // 222. echo /NS/foo; // 111. echo NS/foo; // fatal error. assumes /NS/NS/foo.

只有 類(lèi)(包括抽象類(lèi)和traits)、接口、函數(shù)和const定義的常量 類(lèi)型的代碼受命名空間的影響。

同一個(gè)命名空間可以定義在多個(gè)文件中,即允許將同一個(gè)命名空間的內(nèi)容分割存放在不同的文件中。

所有非 PHP 代碼包括空白符都不能出現(xiàn)在命名空間的聲明之前。

Example-1

PHP 命名空間允許使用反斜杠 / 指定層次化的命名空間的名稱(chēng)。 命名空間不可以嵌套,但是可以使用子命名空間,達(dá)到相同的效果。

<?php namespace my/stuff { namespace nested {//錯(cuò)誤,命名空間不可以嵌套 class foo {} } } /* namespace my/stuff/nested { class foo {} } */

Example-2

在同一個(gè)文件中定義多個(gè)命名空間有兩種語(yǔ)法形式:簡(jiǎn)單組合語(yǔ)法與大括號(hào)語(yǔ)法,但是兩種風(fēng)格在一個(gè)文件中不能混合使用。

如果使用大括號(hào)語(yǔ)法,請(qǐng)注意花括號(hào){}外面不允許有任何代碼。以下代碼全都改成大括號(hào)語(yǔ)法也是錯(cuò)的,因?yàn)榻Y(jié)束標(biāo)簽 ?> 后面有空格或者是換行,建議在純PHP代碼的文件中不要寫(xiě)PHP結(jié)束標(biāo)簽 ?>

<?php namespace MyPRoject; //簡(jiǎn)單組合語(yǔ)法 const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } namespace AnotherProject{ //大括號(hào)語(yǔ)法 const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } }?>  

Example-3

use 關(guān)鍵字必須在文件全局范圍或者是已經(jīng)聲明的其他命名空間里,不可以在塊作用域里,這是因?yàn)橥獠棵臻g導(dǎo)入是在編譯時(shí)而不是運(yùn)行時(shí)完成的。

<?php namespace Languages; function toGreenlandic(){ use Languages/Danish; // ... }

Example-4

PHP5.6 之前只能通過(guò)use導(dǎo)入命名空間和類(lèi),PHP 5.6 之后允許導(dǎo)入常量和方法。 PHP 7.0 后支持分組導(dǎo)入命名空間。

<?php// Pre PHP 7.0 codeuse some/Mynamespace/ClassA;use some/Mynamespace/ClassB;use some/Mynamespace/ClassC as C;use function some/Mynamespace/fn_a;use function some/Mynamespace/fn_b;use function some/Mynamespace/fn_c;use const some/Mynamespace/ConstA;use const some/Mynamespace/ConstB;use const some/Mynamespace/ConstC;// PHP 7+ codeuse some/Mynamespace/{ClassD, ClassE, ClassF as F};use function some/Mynamespace/{fn_d, fn_e, fn_f};use const some/Mynamespace/{ConstD, ConstE, ConstF};

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 林口县| 保靖县| 麻江县| 晋城| 濮阳市| 苍溪县| 平原县| 大关县| 钟祥市| 塔城市| 镇安县| 吴忠市| 玉龙| 师宗县| 达日县| 衡水市| 隆德县| 石狮市| 革吉县| 桐城市| 高邑县| 丹江口市| 资中县| 望都县| 兖州市| 黑山县| 蒲江县| 达尔| 偏关县| 阳泉市| 新沂市| 桐梓县| 镶黄旗| 峨山| 台中县| 松潘县| 盐山县| 陆川县| 塔城市| 昂仁县| 洪江市|