PHP的命名空間(namespace)是php5.3之后才有的。這個概念在C#中已經(jīng)很早就有了,php中的namespace其實和c#的概念是一樣的。
為什么php中要使用namespace?假設(shè)如果不使用namespace,那么每個類在一個項目中的名字就必須是固定的。因為php在new的時候不管是調(diào)用autoload還是調(diào)用已加載過的類,都存在一個類名對應(yīng)的文件。所以在沒有namespace的時候,我們會想各種命名規(guī)則來區(qū)分不同的類,比如project1_school1_class1_Student或者project2_school_class_Student。引入namespace之后就可以將這個有效規(guī)避了,一個namespace就相當(dāng)于對應(yīng)一個文件路徑,查找這個類的時候,就會去對應(yīng)的文件路徑查找類定義文件了。
PHP 命名空間和Java 挺像的,Java 的命名空間實際上來自于 JVM 本身的機制,JVM 是基于 class 字節(jié)碼文件加載類,由于類很容易出現(xiàn)重名的情況,換言之 class 字節(jié)碼文件也會出現(xiàn)重名情況,所以就需要使用目錄來管理不同的字節(jié)碼文件,而為了保證加載正常,所以就需要命名空間這種機制。當(dāng)然,也可以說是由于命名空間的存在才有了目錄管理的方式。但是 PHP 和 Java 不一樣,PHP 是一種動態(tài)腳本語言,它的代碼分散在所有腳本中,當(dāng)需要的時候才會使用 include 函數(shù)加載對應(yīng)的文件,所以 PHP 的命名空間,實際上是基于 PHP 的自動加載類,自動加載類實現(xiàn)了才能保證 PHP 命名空間存在的意義。
定義命名空間PHP 命名空間功能只能在 PHP5.3.0 以上版本使用,對于一個命名空間,只有類、接口、函數(shù)和常量會被包含在命名空間中。
<?php
namespace MyProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
?>
一般情況下,一個文件包含一個類,所以也不需要花括號來分割命名空間范圍。
當(dāng)前文章:PHP中定義命名空間空間
網(wǎng)頁網(wǎng)址:http://muchs.cn/news1/169651.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站維護、標(biāo)簽優(yōu)化、商城網(wǎng)站、服務(wù)器托管、云服務(wù)器
廣告
聲明:本網(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)