程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP命名空間真的槽糕嗎?

PHP命名空間真的槽糕嗎?

編輯:PHP綜合
 在PHP 5.3中,最重要的一個新特性就是對命名空間引入,在此之前,PHP開發者對於PHP中命名空間的實現,已經變得異常的渴望。當PHP應用開始變得巨大,並且更加復雜的時候,命名空間是解決代碼沖突的必要手段。

  批評者:混亂的PHP

  像C#和Java這些語言,是被設計和遵循嚴格的語法標准的。PHP是演化的。最早的版本發布於1995年,版本號3,是面向過程的語言。PHP 4包含了最基本的面向對象,而PHP 5提供了合適的標准OOP模型,命名空間在版本PHP 5.3中被加入其中。

  

PHP

 

  PHP批評者聲明說這個語言是混亂的。函數名不一致(例如strpos,str_split,substr),對象處理是無用的,還有一些語法同其他語言相比,不是極其怪誕,就是異乎尋常。然而,PHP仍然保持著使用最廣泛的服務器端開發語言的頭把交易。它的才華主要在下面的長處:

  ◆初學者可以從簡單的面向過程編程開始。

  ◆他們無須觸及OOP技術仍然可以有所見數

  10年前為PHP 3編寫的代碼仍然可以運行在PHP 5.3下。可能需要一些微小的調整,但是很少需要大量重寫。PHP代碼可能並不總是可愛的、有邏輯的或者優雅的,但是相比其他選擇它的開發總是快捷和容易被理解的。

  PHP命名空間的實現

  不像C#和Java,PHP不得不保持沒有名字空間的代碼的兼容性。這個已經被實現,你可以選擇使用或者不使用命名空間。然而,如果你使用PHP 5.3或更高版本,我推薦使用命名空間,即使你在項目中只使用相同的名字。

  使用namespace和use作為命名空間操作符看起來很有邏輯。一些開發者可能不同意,但是在這種情況下它們如何命名其實並不重要。最後,回到反斜槓的問題上。多數批評者人為這是丑陋的,難以閱讀,並且在Mac上難以輸入。即便如此,我仍然認為它比曾經提議過的兩個冒號要好。例如下面的靜態方法調用:

  // PHP 5.3 beta版靜態方法調用

   echo ::App::Lib1::MyClass::WhoAmI();

  // PHP 5.3正式版靜態方法調用

  echo \App\Lib1\MyClass::WhoAmI();
 

  第二行可以被快速錄入,更少的錯誤可能,容易閱讀,並且容易理解。如果你在字符串之外看到反斜槓,你就知道那一定存在命名空間。

  當然,如果PHP使用“.”作為公共方法、靜態方法和命名空間會更好。這樣可以同Java、C#、JavaScript、Python和許多其他語言一致起來。不幸的是PHP的歷史和向下兼容讓這一切難以實現。

  沒有語言是完美的,而PHP更加不會是完美語言中的一員。無論如何,命名空間已經被很好的實現,特別是考慮到它可能產生的限制和問題。

  文章作者通過分析PHP命名空間的實現,來反擊那些PHP反對者的聲音,您是否了解PHP的命名空間為什麼是這樣的呢?PHP的命名空間真的就那麼槽糕嗎?作為PHP開發者,您是如何認為的呢?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved