成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PHP 5.3中的命名空間:你用過了么?

譯文
開發(fā) 后端
日前發(fā)布的PHP 5.3中,最重要的一個(gè)新特性就是命名空間的加入。命名空間對(duì)于C#和Java開發(fā)者而言都不是新事物了,不過這次出現(xiàn)在PHP當(dāng)中還是有著相當(dāng)重要的意義。

【51CTO精選譯文】命名空間是PHP 5.3中最重要的變化,對(duì)于C#和Java開發(fā)人員對(duì)這個(gè)詞語非常熟悉了,他們終于可以更好地改變PHP應(yīng)用程序的結(jié)構(gòu)了。

為什么我們需要命名空間?

隨著你的PHP代碼庫的增長,對(duì)之前定義的函數(shù)和類名進(jìn)行修改時(shí)風(fēng)險(xiǎn)也更高了,當(dāng)你試圖增加第三方組件或插件時(shí)問題更嚴(yán)重,如果存在兩個(gè)或兩個(gè)以上的代碼集實(shí)現(xiàn)了一個(gè)“Database”和“User”類會(huì)怎么樣?

直到目前,唯一的解決辦法是使用長的類/函數(shù)名,例如Wordpress在每個(gè)類和函數(shù)名前都使用了前綴“WP_”, Zend Framework使用了***描述性的命名約定,導(dǎo)致類名非常冗長,如:

Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive

命名沖突問題可以使用命名空間來解決,PHP常量、類和函數(shù)可以被組合到命名空間庫中。

如何定義命名空間?

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

在PHP文件的頂部使用一個(gè)關(guān)鍵字namespace就可以定義命名空間,它必須是***個(gè)命令(declare除外),在它前面不能出現(xiàn)非PHP代碼、HTML或空格。如:

  1. < ?php  
  2. // define this code in the 'MyProject' namespace  
  3. namespace MyProject;  
  4.  
  5. // ... code ...  

這一行下面的代碼都是指定給MyProject命名空間的,為相同代碼塊嵌套命名空間或定義多個(gè)命名空間是不可能的,如果你真這樣干,只有***一個(gè)命名空間才能識(shí)別,但你可以在同一個(gè)文件中定義不同的命名空間代碼,如:

  1. < ?php  
  2. namespace MyProject1;  
  3. // PHP code for the MyProject1 namespace  
  4.  
  5. namespace MyProject2;  
  6. // PHP code for the MyProject2 namespace  
  7.  
  8. // Alternative syntax  
  9. namespace MyProject3 {  
  10.  // PHP code for the MyProject3 namespace  
  11. }  
  12. ?>  

盡管這么干是可以的,但我建議你不要這么做,***還是每個(gè)文件中只定義一個(gè)命名空間,免得把你弄糊涂了。

子命名空間

PHP允許定義具有層次的命名空間以便庫能夠細(xì)分,子命名空間使用一個(gè)反斜線字符(\)分隔,如:

◆MyProject\SubName

◆MyProject\Database\MySQL

◆CompanyName\MyProject\Library\Common\Widget1

調(diào)用命名空間代碼

在lib1.php文件中我們使用App\Lib1 namespace命名空間定義了一個(gè)常量、一個(gè)函數(shù)和一個(gè)類,如:

lib1.php

  1. < ?php  
  2. // application library 1  
  3. namespace App\Lib1;  
  4.  
  5. const MYCONST = 'App\Lib1\MYCONST';  
  6.  
  7. function MyFunction() {  
  8.  return __FUNCTION__;  
  9. }  
  10.  
  11. class MyClass {  
  12.  static function WhoAmI() {  
  13.   return __METHOD__;  
  14.  }  
  15. }  
  16. ?> 

現(xiàn)在我們可以在另一個(gè)PHP文件包括這段代碼,如:

myapp.php

  1. < ?php  
  2. header('Content-type: text/plain');  
  3. require_once('lib1.php');  
  4.  
  5. echo \App\Lib1\MYCONST . "\n";  
  6. echo \App\Lib1\MyFunction() . "\n";  
  7. echo \App\Lib1\MyClass::WhoAmI() . "\n";  
  8. ?> 

在myapp.php中并沒有定義命名空間,因此這段代碼存在全局空間中,任何對(duì)MYCONST、MyFunction和MyClass的直接引用都會(huì)失敗,因?yàn)樗鼈兇嬖谟贏pp\Lib1命名空間中,為了調(diào)用lib1.php中的代碼,我們可以在\App\Lib1命名空間前添加前綴定義一個(gè)完全合格的名稱,下面是我載入myapp.php時(shí)的輸出結(jié)果:

  1. App\Lib1\MYCONST    
  2. App\Lib1\MyFunction    
  3. App\Lib1\MyClass::WhoAmI 

完全合格名稱可以變得很長,定義長名稱,如App-Lib1-MyClass,有一些明顯的好處。

原文:How to Use PHP Namespaces, Part 1: The Basics

作者:Craig Buckler

【編輯推薦】

  1. PHP 5.3中的命名空間使用方法淺述
  2. PHP 5.3.0發(fā)布 新增命名空間等多項(xiàng)特性
  3. PHP的命名空間
  4. PHP 5.3閉包語法初探
  5. PHP 5.3新版特性淺析
責(zé)任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2009-07-17 09:31:06

PHP 5.3命名空間

2023-12-22 16:39:47

Java函數(shù)式接口開發(fā)

2022-05-18 08:00:26

函數(shù)劫持JavaScript鉤子函數(shù)

2021-02-22 09:10:10

數(shù)字人民幣DCEP區(qū)塊鏈

2020-08-23 09:18:30

Pandas函數(shù)數(shù)據(jù)分析

2010-11-26 09:45:56

2023-10-10 08:33:40

編程范式命令式編程

2014-12-23 14:36:32

PHP

2019-11-17 22:20:57

Python編程語言程序員

2020-12-28 06:20:27

OptionalTryjava

2009-08-25 10:58:41

PHP命名空間

2022-05-27 09:02:31

Openbase開源前端

2010-07-05 16:33:00

PHPPHP命名空間

2010-07-09 09:01:55

2009-07-16 15:02:33

Shapes命名空間Net Micro F

2009-03-23 10:53:00

PHP5.3新特性PHP5.3PHP5

2020-07-13 07:00:21

Kubernetes

2009-11-23 14:17:50

PHP 5.3閉包語法

2009-05-13 14:15:09

PHP 5.3閉包匿名函數(shù)

2011-06-29 09:27:10

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产主播第一页 | 国产精品99久久久久久大便 | 91中文字幕在线观看 | 日韩精品一区二区三区高清免费 | 欧美在线视频免费 | 成人中文字幕av | 综合久| 午夜日韩视频 | 日本免费在线 | 中文字幕蜜臀av | 亚洲一区 中文字幕 | 久久久av| 国产福利资源在线 | 18gay男同69亚洲网站 | 国产精品久久久久久久午夜 | 日韩av中文 | 日韩欧美国产电影 | 欧美日韩一区二区在线播放 | 日韩精品一区二区三区 | 精品1区| 色男人天堂av | 久久99精品久久久久久国产越南 | 精品少妇一区二区三区日产乱码 | 可以免费观看的av | av 一区二区三区 | 日韩成人免费视频 | 亚洲成人一区二区在线 | 北条麻妃一区二区三区在线视频 | av一区二区三区四区 | 围产精品久久久久久久 | tube国产 | 91网站在线看 | 成人免费视频一区 | 日韩欧美一区二区三区四区 | 日韩欧美视频 | 免费激情网站 | 一区二区三区免费观看 | 成年人黄色小视频 | 欧美激情在线精品一区二区三区 | 天堂男人av| 91原创视频在线观看 |