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

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

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

【51CTO精選譯文】命名空間是PHP 5.3中最重要的變化,對于C#和Java開發人員對這個詞語非常熟悉了,他們終于可以更好地改變PHP應用程序的結構了。

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

隨著你的PHP代碼庫的增長,對之前定義的函數和類名進行修改時風險也更高了,當你試圖增加第三方組件或插件時問題更嚴重,如果存在兩個或兩個以上的代碼集實現了一個“Database”和“User”類會怎么樣?

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

Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive

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

如何定義命名空間?

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

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

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

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

  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. ?>  

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

子命名空間

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

◆MyProject\SubName

◆MyProject\Database\MySQL

◆CompanyName\MyProject\Library\Common\Widget1

調用命名空間代碼

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

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. ?> 

現在我們可以在另一個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中并沒有定義命名空間,因此這段代碼存在全局空間中,任何對MYCONST、MyFunction和MyClass的直接引用都會失敗,因為它們存在于App\Lib1命名空間中,為了調用lib1.php中的代碼,我們可以在\App\Lib1命名空間前添加前綴定義一個完全合格的名稱,下面是我載入myapp.php時的輸出結果:

  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發布 新增命名空間等多項特性
  3. PHP的命名空間
  4. PHP 5.3閉包語法初探
  5. PHP 5.3新版特性淺析
責任編輯:yangsai 來源: 51CTO.com
相關推薦

2009-07-17 09:31:06

PHP 5.3命名空間

2023-12-22 16:39:47

Java函數式接口開發

2022-05-18 08:00:26

函數劫持JavaScript鉤子函數

2021-02-22 09:10:10

數字人民幣DCEP區塊鏈

2020-08-23 09:18:30

Pandas函數數據分析

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閉包匿名函數

2011-06-29 09:27:10

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久吹潮 | 欧美成视频 | 男女在线网站 | 在线免费观看视频你懂的 | 在线免费观看视频黄 | 一区二区三区视频在线观看 | 久久久久久国产精品免费免费 | 成人av久久| 国产精品免费观看 | 免费a网 | 国产欧美精品在线观看 | 国产一区二区三区色淫影院 | 国产羞羞视频在线观看 | 在线视频日韩 | 中文字字幕一区二区三区四区五区 | 一区二区久久 | 亚洲精品久久久久久宅男 | 最新中文字幕第一页视频 | 狠狠天天 | 久久精品一区二区 | 麻豆久久久久 | 久久精品a级毛片 | 中文字幕 亚洲一区 | 在线高清免费观看视频 | av网站免费观看 | 欧美精品在线一区 | 日韩三级一区 | 成人av电影在线观看 | 国产清纯白嫩初高生视频在线观看 | 九九综合 | 一区二区三区视频 | 国产美女在线观看 | 国产一级片久久久 | 亚洲国产高清免费 | 日韩一区二区三区在线观看视频 | 成人在线免费视频观看 | 欧美极品视频 | 欧美精品99 | 成人在线观看免费观看 | 国产一级淫片免费视频 | 日韩中文一区二区三区 |