主頁 > 知識庫 > php命名空間設(shè)計思想、用法與缺點分析

php命名空間設(shè)計思想、用法與缺點分析

熱門標(biāo)簽:仁和怎么申請400開頭的電話 廣東地市地圖標(biāo)注 江西手機(jī)自動外呼防封系統(tǒng)是什么 哪里辦理400電話 高德地圖標(biāo)注家 怎么向銷售公司推銷外呼系統(tǒng) 廣州防封卡外呼系統(tǒng)多少錢一個月 長春人工外呼系統(tǒng)服務(wù)商 外呼系統(tǒng)撥打暫時無法接通

本文實例講述了php命名空間設(shè)計思想、用法與缺點。分享給大家供大家參考,具體如下:

相比C#等語言,你可以在php函數(shù)里面隨意定義變量并賦值,而不用擔(dān)心覆蓋了全局變量,或者類變量;你也可以隨意的定義類變量,而不用擔(dān)心會和函數(shù)名沖突,因為變量前面都有個$。

php的命名空間和全局變量、局部變量的設(shè)計思想一樣,都是為了盡可能的減少命名沖突。php的命名空間可以和文件系統(tǒng)類似,有相對命名空間和絕對命名空間。

定義命名空間

必須是第一個語句,前面不能有任何語句,注釋可以。
必須是絕對命名空間。

namespace bookrpg\config;
//或者
namespace bookrpg\config
{
}
namespace \bookrpg\config; //錯誤,不能有前導(dǎo)\


導(dǎo)入命名空間

必須是絕對命名空間。

use bookrpg\config\ClassName;
use \bookrpg\config\ClassName; //可以有前導(dǎo)\,但不建議加
use bookrpg\config\ClassName as NewClassName;
use Exception;
use \Exception; //可以有前導(dǎo)\,但不建議加

使用命名空間

使用絕對命名空間

$cls = new \bookrpg\config\ClassName();
class MyException extends \Exception
{
}

使用相對命名空間

namespace bookrpg
{
  //等同于new \bookrpg\config\ClassName();
  $cls = new config\ClassName();
  //錯誤,php會認(rèn)為是\bookrpg\Exception,而不是全局類Exception
  $ex = new Exception();
}

怪異的地方

C++、Java、C#都有相似的命名空間概念,而php的命名空間不跟隨大流,有自己的一套獨立的思想,對于先入為主的人來來說就顯得怪異和令人迷惑。

  1. 命名空間中居然有反斜杠?

    點號(.)已經(jīng)被用作字符串連接符了,又要區(qū)分絕對和相對命名空間,new .a.b.c()太不美觀,所以選擇反斜杠吧。

  2. 一旦使用了命名空間,使用全局類也要加上“\”或者use一下,累不累呀?

    沒辦法,為了嚴(yán)格類比文件系統(tǒng)的概念,也為了隨便定義類名,而不用擔(dān)心類名沖突。

  3. 既然是嚴(yán)格類比文件系統(tǒng),為什么定義和導(dǎo)入命名空間的時候,前面不加\呢?

    只能說,php的設(shè)計者不是完美主義者。

但php的命名空間確實缺乏邏輯完美性:

  • 前導(dǎo)\的使用不統(tǒng)一,同樣是絕對命名空間,定義的時候不允許用,導(dǎo)入的時候卻允許用。
  • 即使是全局類,在非全局命名空間下,也必須使用前導(dǎo)\,而全局函數(shù)和變量又不受此限制。

使用建議

  • 定義和導(dǎo)入命名空間的時候,統(tǒng)一不加前導(dǎo)\
  • 所有的類都使用use導(dǎo)入,包括全局類,只命名空間類,有沖突的就as一下
  • 禁止直接使用相對命名空間

理解了php命名空間的設(shè)計思想,并避免其設(shè)計不完美的地方,這樣看來php的命名空間也是很容易接受的。

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • php的命名空間與自動加載實現(xiàn)方法
  • PHP命名空間定義與用法實例分析
  • PHP進(jìn)階學(xué)習(xí)之命名空間基本用法分析
  • PHP中命名空間的使用例子
  • 實例講解PHP中使用命名空間
  • PHP命名空間簡單用法示例
  • PHP命名空間與自動加載類詳解
  • PHP命名空間namespace及use的簡單用法分析
  • 如何理解PHP核心特性命名空間

標(biāo)簽:梅河口 湘西 文山 濮陽 海北 惠州 廈門 黔東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php命名空間設(shè)計思想、用法與缺點分析》,本文關(guān)鍵詞  php,命名,空間,設(shè)計思想,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php命名空間設(shè)計思想、用法與缺點分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于php命名空間設(shè)計思想、用法與缺點分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章