中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

PHP編程語言的命名空間是什么

這篇文章主要介紹“PHP編程語言的命名空間是什么”,在日常操作中,相信很多人在PHP編程語言的命名空間是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP編程語言的命名空間是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

這篇文章主要介紹“PHP編程語言的命名空間是什么”,在日常操作中,相信很多人在PHP編程語言的命名空間是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP編程語言的命名空間是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、略陽網(wǎng)站維護(hù)、網(wǎng)站推廣。

PHP 命名空間(namespace)是在PHP 5.3中加入的,如果你學(xué)過C#和Java,那命名空間就不算什么新事物。 不過在PHP當(dāng)中還是有著相當(dāng)重要的意義。

PHP 命名空間可以解決以下兩類問題:

1. 用戶編寫的代碼與PHP內(nèi)部的類/函數(shù)/常量或第三方類/函數(shù)/常量之間的名字沖突。

2. 為很長的標(biāo)識符名稱(通常是為了緩解第一類問題而定義的)創(chuàng)建一個別名(或簡短)的名稱,提高源代碼的可讀性。

。。。。。。。。。。。。。。。

定義命名空間

默認(rèn)情況下,所有常量、類和函數(shù)名都放在全局空間下,就和PHP支持命名空間之前一樣。

命名空間通過關(guān)鍵字namespace 來聲明。如果一個文件中包含命名空間,它必須在其它所有代碼之前聲明命名空間。語法格式如下;

<?php  

// 定義代碼在 'MyProject' 命名空間中  

namespace MyProject;  

 // ... 代碼 ...  

?>

你也可以在同一個文件中定義不同的命名空間代碼,如下所示:

<?php

namespace MyProject {

    const CONNECT_OK = 1;

    class Connection { /* ... */ }

    function connect() { /* ... */  }

}

namespace AnotherProject {

    const CONNECT_OK = 1;

    class Connection { /* ... */ }

    function connect() { /* ... */  }

}

?>

將全局的非命名空間中的代碼與命名空間中的代碼組合在一起,只能使用大括號形式的語法。全局代碼必須用一個不帶名稱的 namespace 語句加上大括號括起來,如下所示:

<?php

namespace MyProject {

const CONNECT_OK = 1;

class Connection { /* ... */ }

function connect() { /* ... */  }

}

namespace { // 全局代碼

session_start();

$a = MyProject\connect();

echo MyProject\Connection::start();

}

?>

在聲明命名空間之前唯一合法的代碼是用于定義源文件編碼方式的 declare 語句。所有非 PHP 代碼包括空白符都不能出現(xiàn)在命名空間的聲明之前。

<?php

declare(encoding='UTF-8'); //定義多個命名空間和不包含在命名空間中的代碼

namespace MyProject {

const CONNECT_OK = 1;

class Connection { /* ... */ }

function connect() { /* ... */  }

}

namespace { // 全局代碼

session_start();

$a = MyProject\connect();

echo MyProject\Connection::start();

}

?>

。。。。。。。。。。。。

子命名空間

與目錄和文件的關(guān)系很像,PHP 命名空間也允許指定層次化的命名空間的名稱。因此,命名空間的名字可以使用分層次的方式定義:

<?php

namespace MyProject\Sub\Level;  //聲明分層次的單個命名空間

const CONNECT_OK = 1;

class Connection { /* ... */ }

function Connect() { /* ... */  }

?>

上面的例子創(chuàng)建了常量 MyProject\Sub\Level\CONNECT_OK,類 MyProject\Sub\Level\Connection 和函數(shù) MyProject\Sub\Level\Connect。

。。。。。。。。。。。

命名空間使用

PHP 命名空間中的類名可以通過三種方式引用:

http://www.iis7.com/b/wzjk/

1. 非限定名稱,或不包含前綴的類名稱,例如 $a=new foo(); 或 foo::staticmethod();。如果當(dāng)前命名空間是 currentnamespace,foo 將被解析為 currentnamespace\foo。如果使用 foo 的代碼是全局的,不包含在任何命名空間中的代碼,則 foo 會被解析為foo。 警告:如果命名空間中的函數(shù)或常量未定義,則該非限定的函數(shù)名稱或常量名稱會被解析為全局函數(shù)名稱或常量名稱。

2. 限定名稱,或包含前綴的名稱,例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。如果當(dāng)前的命名空間是 currentnamespace,則 foo 會被解析為 currentnamespace\subnamespace\foo。如果使用 foo 的代碼是全局的,不包含在任何命名空間中的代碼,foo 會被解析為subnamespace\foo。

3. 完全限定名稱,或包含了全局前綴操作符的名稱,例如, $a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();。在這種情況下,foo 總是被解析為代碼中的文字名(literal name)currentnamespace\foo。

注意:訪問任意全局類、函數(shù)或常量,都可以使用完全限定名稱

。。。。。。。。。。。。

命名空間和動態(tài)語言特征

PHP 命名空間的實(shí)現(xiàn)受到其語言自身的動態(tài)特征的影響。

必須使用完全限定名稱(包括命名空間前綴的類名稱)。注意因?yàn)樵趧討B(tài)的類名稱、函數(shù)名稱或常量名稱中,限定名稱和完全限定名稱沒有區(qū)別,因此其前導(dǎo)的反斜杠是不必要的。

。。。。。。。。。。。。

namespace關(guān)鍵字和__NAMESPACE__常量

PHP支持兩種抽象的訪問當(dāng)前命名空間內(nèi)部元素的方法,__NAMESPACE__ 魔術(shù)常量和namespace關(guān)鍵字。

常量__NAMESPACE__的值是包含當(dāng)前命名空間名稱的字符串。在全局的,不包括在任何命名空間中的代碼,它包含一個空的字符串。

__NAMESPACE__ 示例, 在命名空間中的代碼

關(guān)鍵字 namespace 可用來顯式訪問當(dāng)前命名空間或子命名空間中的元素。它等價于類中的 self 操作符。

namespace操作符,命名空間中的代碼

。。。。。。。。。。。。

使用命名空間:別名/導(dǎo)入

PHP 命名空間支持 有兩種使用別名或?qū)敕绞剑簽轭惷Q使用別名,或?yàn)槊臻g名稱使用別名。

在PHP中,別名是通過操作符 use 來實(shí)現(xiàn)的. 

。。。。。。。。。。。

使用命名空間:后備全局函數(shù)/常量

在一個命名空間中,當(dāng) PHP 遇到一個非限定的類、函數(shù)或常量名稱時,它使用不同的優(yōu)先策略來解析該名稱。類名稱總是解析到當(dāng)前命名空間中的名稱。因此在訪問系統(tǒng)內(nèi)部或不包含在命名空間中的類名稱時,必須使用完全限定名稱

1、在命名空間中訪問全局類對于函數(shù)和常量來說,如果當(dāng)前命名空間中不存在該函數(shù)或常量,PHP 會退而使用全局空間中的函數(shù)或常量。

2、 命名空間中后備的全局函數(shù)/常量

。。。。。。。。。。。

全局空間

如果沒有定義任何命名空間,所有的類與函數(shù)的定義都是在全局空間,與 PHP 引入命名空間概念前一樣。在名稱前加上前綴 \ 表示該名稱是全局空間中的名稱,即使該名稱位于其它的命名空間中時也是如此。

。。。。。。。。。。。

命名空間的順序

自從有了命名空間之后,最容易出錯的該是使用類的時候,這個類的尋找路徑是什么樣的了。

為了引用全局命名空間中的全局類,必須使用完全限定名稱 new \C()。

新聞名稱:PHP編程語言的命名空間是什么
網(wǎng)站URL:http://www.rwnh.cn/article10/cpggdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、企業(yè)網(wǎng)站制作網(wǎng)站導(dǎo)航、用戶體驗(yàn)、做網(wǎng)站建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
逊克县| 宁蒗| 柳江县| 台安县| 元朗区| 抚顺市| 隆子县| 阿鲁科尔沁旗| 灵石县| 应用必备| 六安市| 德阳市| 峨眉山市| 阿尔山市| 高州市| 朝阳县| 贞丰县| 措勤县| 高青县| 民丰县| 临澧县| 河间市| 万荣县| 佳木斯市| 鄂托克前旗| 敦化市| 中西区| 从化市| 崇义县| 子长县| 平远县| 汕尾市| 桂林市| 观塘区| 丰城市| 恩施市| 布拖县| 疏附县| 嘉峪关市| 淮南市| 徐闻县|