婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳細解讀php的命名空間(二)

詳細解讀php的命名空間(二)

熱門標簽:長沙crm外呼系統業務 南寧高頻外呼回撥系統哪家好 400電話辦理福州市 專業電話機器人批發商 深圳外呼系統收費 電話機器人危險嗎 江蘇外呼電銷機器人報價 離石地圖標注 400電話申請方法收費

一:命名空間里的namespace關鍵字和__NAMESPACE__常量的運用

PHP支持兩種抽象的訪問當前命名空間內部元素的方法,__NAMESPACE__ 魔術常量和namespace關鍵字。

常量__NAMESPACE__會儲存當前命名空間的名字字符串,如果當前是全局非命名空間,則保存的是空字符串。

關鍵字 namespace 可用來顯式訪問當前命名空間或子命名空間中的元素。它等價于類中的 self 操作符。如果不在當前是全局環境的話,那么顯式訪問的就是全局限定的元素。

__NAMESPACE__實例:

?php 
namespace Index\Name{ 
 var_dump(__NAMESPACE__); //打印string(10) "Index\Name" 
 
 function foo($classname){ 
  return __NAMESPACE__.'\\'.$classname; 
 } 
} 
 
namespace{ 
 var_dump(__NAMESPACE__); //打印string(0) "" 
 
 var_dump(Index\Name\foo('ceshi')); //打印string(16) "Index\Name\ceshi" 
} 
?>

namespace實例:

?php 
namespace Index\Name\Index{ 
 function foo(){ 
  return 2; 
 } 
} 
 
namespace Index\Name{ 
 var_dump(namespace\Index\foo()); //打印2 
 
 function foo(){ 
  return 1; 
 } 
} 
 
namespace{ 
 var_dump(namespace\Index\Name\foo()); //打印1 
} 
?>

二:使用命名空間的別名/導入

命名空間具備允許別名導入以及導入的功能,命名空間導入需使用use關鍵字,如果還需要設置別名則需要use與as進行配合。

1)導入支持范圍:

1:為類名稱使用別名
2:為接口名稱使用別名
3:為命名空間使用別名
4:5.6以上的php版本,允許函數或者常量使用別名。

2)別名/導入格式

導入格式:use [函數/常量] 命名空間完全限定名[類/接口/函數/常量]
別名導入格式:use [函數/常量] 命名空間完全限定名[類/接口/函數/常量] as 別名

注意:如果沒有使用完全限定名的話,也和之前使用命名空間一樣,會變成當前命名空間+限定名稱來組合出完整的命名空間,所以如果不寫完全限定名稱,這里一定要多留意組合的結果是否是正確的命名空間。

導入實例:

?php 
namespace Index\Col\Ads{ 
 
 const INSTANCE='const_val'; 
 
 function functionName(){ 
  return 'function_val'; 
 } 
 
 class className{ 
  static function classv(){ 
   return 'class_val'; 
  } 
 } 
} 
 
namespace Col{ 
 const INSTANCE='const_val_col'; 
 
 function functionName(){ 
  return 'function_val_col'; 
 } 
 
 class className{ 
  static function classv(){ 
   return 'class_val_col'; 
  } 
 } 
} 
 
 
namespace Index{ 
/*引入Index\Col\Ads命名空間*/ 
use \Index\Col\Ads; 
/*讀取引入的命名空間的常量*/ 
echo \Index\Col\Ads\INSTANCE.'br/>'; //打印class_val 
/*讀取引入的命名空間的函數*/ 
echo \Index\Col\Ads\functionName().'br/>'; //打印class_val 
/*讀取引入的命名空間的類,接口也是一樣的*/ 
echo \Index\Col\Ads\className::classv().'br/>'; //打印class_val 
 
/*引入常量*/ 
use const \Col\INSTANCE; 
/*讀取常量*/ 
echo INSTANCE.'br/>'; //打印const_val_col 
 
/*引入函數*/ 
use function \Col\functionName; 
/*讀取函數*/ 
echo functionName().'br/>'; //打印function_val_col 
 
/*引入類或者接口*/ 
use \Col\className; 
/*讀取類或者接口*/ 
echo className::classv().'br/>'; //打印classname_val_col 
 
} 
?> 

以上的例子里Index的命名空間里寫的是完全限定名,Index\Col\Ads如果沒有前面的\全局操作符的話,就會變成Index\Index\Col\Ads的命名空間了,一定要注意。

別名導入實例:

?php 
namespace Index\Col\Ads{ 
 
 const INSTANCE='const_val'; 
 
 const NS='namespace'; 
 
 function functionName(){ 
  return 'function_val'; 
 } 
 
 class className{ 
  static function classv(){ 
   return 'class_val'; 
  } 
 } 
} 
 
 
namespace{ 
/*引入Index\Col\Ads命名空間,并設置別名Ads*/ 
use Index\Col\Ads as Ads; 
 
/*引入Index\Col\Ads命名空間的常量INSTANCE,并設置別名con*/ 
use const Index\Col\Ads\INSTANCE as con; 
 
/*引入Index\Col\Ads命名空間的函數functionName,并設置別名func*/ 
use function Index\Col\Ads\functionName as func; 
 
/*引入Index\Col\Ads命名空間的類className,并設置別名classn,接口的別名設置方式和這個一樣*/ 
use Index\Col\Ads\className as classn; 
 
echo Ads\NS.'br/>'; //打印namespace 
echo con.'br/>'; //打印const_val 
echo func().'br/>'; //打印function_val 
echo classn::classv().'br/>'; //打印class_val 
} 
?> 

這個例子里是全局的非命名空間,所以沒有全局操作符也不會影響導入的命名空間。

三:特別補充

1:命名空間首字符不能是數字,必須是字母或者是下劃線,否則會報出farse error。

2:define在命名空間內設置的常量默認是全局的(例外:一個文件內多個命名空間用括號包起來的方式define默認設置的是該命名空間的常量),所以如果需要命名空間下的常量,需要特別寫明在常量名稱里,例如define('Index\CON','CON')和define(__NAMESPACE__.'\CON','CON')這兩種方式都是設置命名空間下的常量CON。

常量實例:

?php 
namespace Col; 
/*define默認設置的是全局的常量*/ 
define('CON','globals'); 
 
/*特別聲明設立的是當前命名空間下的常量*/ 
define(__NAMESPACE__.'\CON','col'); 
 
/*特別聲明設立的是Index命名空間下的常量*/ 
define('Index\CON','index'); 
 
/*全局操作符后直接跟常量名,所以獲取到的是全局的常量CON*/ 
var_dump(\CON); //globals 
 
/*沒有任何限定,所以獲取的是當前命名空間的常量CON*/ 
var_dump(CON); //col 
 
/*全局限定,讀取其對應的Col命名空間的常量CON*/ 
var_dump(\Col\CON); //col 
 
/*全局限定,讀取其對應的Index命名空間的常量CON*/ 
var_dump(\Index\CON); //index 
?> 

3:看到上面的實例,推及到函數及類(接口)就不一樣了,在命名空間里設置的函數及類(接口)都是屬于該命名空間的內容,不管是不是一個文件多個命名空間大括號里設置的。

函數和類的實例:可以看出在命名空間內的函數和類是屬于命名空間的

index.php

?php 
function foo(){ 
 return 'global'; 
} 
 
class fool{ 
 static function ceshi(){ 
  return 'global'; 
 } 
} 
?>

col.php

?php 
namespace Col; 
require './index.php'; //如果不引入index.php文件,那么下面的\foo()和\foo::ceshi()都會報fatal error 
 
function foo(){ 
 return 1; 
} 
 
class fool{ 
 static function ceshi(){ 
  return 2; 
 } 
} 
 
var_dump(\foo());   //global 
var_dump(foo());   //打印1 
var_dump(\Col\foo());  //打印1 
 
var_dump(\fool::ceshi());  //global 
var_dump(fool::ceshi());  //打印2 
var_dump(\Col\fool::ceshi()); //打印2 
?> 

4:設置命名空間的時候,要注意不要使用php的關鍵字,例如function、class、abstract之類的,否則會報出parse error。

5:同一個命名空間,不同文件間的使用無須帶上命名空間,直接使用函數、常量、類及接口就可以了。

6:一個命名空間的類、常量、接口、函數單獨引入另一個命名空間,其中函數、常量、類、接口如果發生了沖突,如果沒有用限定詞則優先使用單獨引入類、常量、接口、函數。

實例:

indext.php

?php 
namespace Lic; 
 
define(__NAMESPACE__.'\CON',1); 
 
function func(){ 
 echo 1; 
} 
 
class foo{ 
 static function ceshi(){ 
  return 1; 
 } 
} 

只引入命名空間

?php 
namespace Col; 
require './indext.php'; 
use \Lic; 
 
define(__NAMESPACE__.'\CON',2); //設定命名空間的常量必須寫明命名空間,否則是全局的常量 
 
function func(){ 
 echo 2; 
} 
 
class foo{ 
 static function ceshi(){ 
  return 2; 
 } 
} 
 
var_dump(CON); //打印2 
var_dump(namespace\CON); //打印2 
 
func(); //打印2 
namespace\func(); //打印2 
 
var_dump(foo::ceshi()); //打印2 
var_dump(namespace\foo::ceshi()); //打印2 

如果單獨引入類、接口、函數、常量的情況,名稱沖突且沒有用限定的話優先使用引入的:

?php 
namespace Col; 
require './indext.php'; 
use \Lic\foo; 
use function \Lic\func; 
use const \Lic\CON; 
 
define(__NAMESPACE__.'\CON',2); //設定命名空間的常量必須寫明命名空間,否則是全局的常量 
 
function func(){ 
 echo 2; 
} 
 
class foo{ 
 static function ceshi(){ 
  return 2; 
 } 
} 
 
var_dump(CON); //打印1 
var_dump(namespace\CON); //打印2 
 
func(); //打印1 
namespace\func(); //打印2 
 
var_dump(foo::ceshi()); //打印1 
var_dump(namespace\foo::ceshi()); //打印2 

暫時就補充到這里,以后還有后續的再添加。。。

您可能感興趣的文章:
  • PHP命名空間簡單用法示例
  • PHP命名空間與自動加載類詳解
  • PHP命名空間namespace及use的簡單用法分析
  • PHP命名空間namespace定義及導入use用法詳解
  • 詳細解讀php的命名空間(一)
  • 實例講解PHP中使用命名空間

標簽:株洲 南昌 白酒營銷 興安盟 濱州 曲靖 南京 太原

巨人網絡通訊聲明:本文標題《詳細解讀php的命名空間(二)》,本文關鍵詞  詳細,解讀,php,的,命名,空間,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳細解讀php的命名空間(二)》相關的同類信息!
  • 本頁收集關于詳細解讀php的命名空間(二)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品嫩草影院com| 欧美色倩网站大全免费| 91福利在线导航| 中文字幕国产一区| 欧美日本一区二区三区四区| av在线不卡电影| 成人激情黄色小说| 国产在线看一区| 5月丁香婷婷综合| 色域天天综合网| 亚洲精品伦理在线| 久久综合中文字幕| 久久疯狂做爰流白浆xx| 日韩精品欧美精品| 婷婷久久综合九色综合伊人色| 日韩国产高清在线| 成人美女视频在线观看18| 91丨porny丨在线| 成人一级视频在线观看| 亚洲精品国久久99热| 日韩**一区毛片| 色综合色狠狠天天综合色| 色婷婷久久一区二区三区麻豆| 欧美久久婷婷综合色| 2017欧美狠狠色| 亚洲最新视频在线播放| 国产成人综合精品三级| 亚洲国产一区二区视频| 69成人精品免费视频| 成人免费观看视频| 欧美日韩成人综合| 久久女同互慰一区二区三区| 精品国产乱码久久久久久免费| 一区二区三区 在线观看视频| 色综合夜色一区| 国产剧情av麻豆香蕉精品| 538在线一区二区精品国产| 日韩美女视频一区二区| 国产三级一区二区| 精品国产一区二区亚洲人成毛片| 91丨九色丨黑人外教| 亚洲午夜免费福利视频| 欧美国产精品v| 精品欧美一区二区在线观看| 成人黄色小视频| 亚洲人成7777| 91色乱码一区二区三区| 国产精品久久久久国产精品日日| 亚洲精品一区二区精华| 精品国产乱码久久久久久蜜臀| 欧美一级久久久| 久久久亚洲精品石原莉奈 | 国产色综合久久| 欧美国产精品中文字幕| 一区二区三区四区中文字幕| 三级一区在线视频先锋| 国内精品写真在线观看| bt7086福利一区国产| 91国产精品成人| 日韩欧美一级特黄在线播放| 久久人人97超碰com| 亚洲一区二区精品3399| 麻豆精品国产传媒mv男同| 91在线视频播放地址| 在线电影一区二区三区| 亚洲国产精品av| 日韩—二三区免费观看av| 成人app在线| 欧美成人一区二区三区片免费 | 日本不卡视频一二三区| 不卡一区中文字幕| 日韩美女一区二区三区四区| 国产成人精品影视| 亚洲欧美激情插| 国产精品一区二区91| 国产精品国产成人国产三级| 久久亚洲综合色一区二区三区| 日韩免费视频线观看| 欧美激情一区二区三区蜜桃视频| 欧美美女一区二区在线观看| 久久久国产精品午夜一区ai换脸| 色婷婷激情综合| 精品三级在线看| 亚洲色图一区二区| 日韩精品一区二区三区四区视频| 亚洲精品久久久蜜桃| 91免费看视频| 日本韩国一区二区三区| wwwwxxxxx欧美| 国产精品女同一区二区三区| 精品一区二区成人精品| 91一区一区三区| 国产日韩欧美在线一区| 欧美日韩一区二区在线视频| 亚洲精品乱码久久久久久久久| 99热精品一区二区| 色婷婷av一区二区三区gif| 亚洲国产人成综合网站| 黑人巨大精品欧美一区| 污片在线观看一区二区| 欧美挠脚心视频网站| 久久99精品久久久| 国内精品免费在线观看| 成av人片一区二区| 亚洲国产精品ⅴa在线观看| 亚洲综合免费观看高清完整版| 色噜噜狠狠成人网p站| 国产福利电影一区二区三区| 国产精品久久久久7777按摩| 国产福利一区在线| 中国av一区二区三区| 久久精品国产亚洲a| 一区二区三区四区激情| 91精品国产色综合久久| 在线亚洲人成电影网站色www| 一区二区三区在线播放| 国产亚洲一区二区三区| 精品久久久久久久久久久久久久久久久| 6080yy午夜一二三区久久| voyeur盗摄精品| 中文字幕日韩欧美一区二区三区| 亚洲va国产va欧美va观看| 日韩欧美在线不卡| 欧美日韩中文国产| 91黄色小视频| 亚洲色图视频网| 国产一区二区福利视频| 色欧美88888久久久久久影院| 色狠狠一区二区三区香蕉| 久久久久久黄色| 欧美亚洲愉拍一区二区| 高潮精品一区videoshd| 国产91丝袜在线观看| 奇米影视一区二区三区| 欧美日韩一卡二卡| 丝袜脚交一区二区| 日精品一区二区三区| 中文字幕巨乱亚洲| 91麻豆精品国产自产在线观看一区 | 免费在线观看一区| 欧美性色综合网| 国产真实精品久久二三区| 国产精品国产a级| 国产精品嫩草影院av蜜臀| 26uuu精品一区二区在线观看| www.欧美.com| 欧美一区二区三区影视| 26uuu亚洲综合色| 精品午夜久久福利影院| 日韩精品电影在线| 日韩视频免费观看高清在线视频| 伊人色综合久久天天| 欧美人妇做爰xxxⅹ性高电影| 亚洲欧洲中文日韩久久av乱码| av一区二区三区| 亚洲九九爱视频| 日韩黄色免费电影| 日韩欧美亚洲一区二区| 精品亚洲免费视频| 国产欧美一区二区三区在线看蜜臀 | 国产午夜精品美女毛片视频| 久久99国产精品久久99果冻传媒| 精品精品欲导航| 成人av网站免费| 一区二区三区中文在线| 在线成人av网站| 国产成人精品亚洲777人妖| 国产精品无人区| 欧美丝袜丝交足nylons| 韩日av一区二区| 一区二区三区在线免费播放| 欧美日韩一本到| 国产一区二区三区黄视频| 国产精品电影一区二区三区| 成人污视频在线观看| 亚洲成a人v欧美综合天堂 | 欧美日韩国产一级| 日韩高清不卡一区二区三区| 欧美激情一区二区| 欧美无砖专区一中文字| 国产在线视频不卡二| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 亚洲精品国产无天堂网2021| 日韩一区二区在线观看| 99re成人精品视频| 国产一区二区影院| 日韩中文字幕亚洲一区二区va在线| 精品国产免费一区二区三区香蕉| 色网站国产精品| 激情久久五月天| 天堂影院一区二区| 亚洲综合色网站| 亚洲美女视频在线观看| 国产色爱av资源综合区| 日韩三级电影网址| 日韩电影在线观看一区| 亚洲大片免费看| 亚洲午夜电影在线| 亚洲靠逼com| 亚洲精品写真福利|