日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

PHP 命名空間原理與用法詳解

瀏覽:233日期:2022-09-10 17:21:19

本文實(shí)例講述了PHP 命名空間原理與用法。分享給大家供大家參考,具體如下:

命名空間適用于 (PHP 5 >= 5.3.0, PHP 7)

使用命名空間基礎(chǔ)

PHP 命名空間類似于文件系統(tǒng),

在文件系統(tǒng)中訪問一個(gè)文件有三種方式: 相對(duì)文件名形式如foo.txt。它會(huì)被解析為 currentdirectory/foo.txt,其中 currentdirectory 表示當(dāng)前目錄。因此如果當(dāng)前目錄是 /home/foo,則該文件名被解析為/home/foo/foo.txt。 相對(duì)路徑名形式如subdirectory/foo.txt。它會(huì)被解析為 currentdirectory/subdirectory/foo.txt。 絕對(duì)路徑名形式如/main/foo.txt。它會(huì)被解析為/main/foo.txt。PHP 命名空間中的元素使用同樣的原理。例如,類名可以通過三種方式引用: 非限定名稱,或不包含前綴的類名稱,例如 $a=new foo(); 或 foo::staticmethod();。如果當(dāng)前命名空間是 currentnamespace,foo 將被解析為currentnamespacefoo。如果使用 foo 的代碼是全局的,不包含在任何命名空間中的代碼,則 foo 會(huì)被解析為foo。 警告:如果命名空間中的函數(shù)或常量未定義,則該非限定的函數(shù)名稱或常量名稱會(huì)被解析為全局函數(shù)名稱或常量名稱。 限定名稱,或包含前綴的名稱,例如 $a = new subnamespacefoo(); 或 subnamespacefoo::staticmethod();。如果當(dāng)前的命名空間是currentnamespace,則 foo 會(huì)被解析為 currentnamespacesubnamespacefoo。如果使用 foo 的代碼是全局的,不包含在任何命名空間中的代碼,foo 會(huì)被解析為subnamespacefoo。 完全限定名稱,或包含了全局前綴操作符的名稱,例如, $a = new currentnamespacefoo(); 或 currentnamespacefoo::staticmethod();。在這種情況下,foo 總是被解析為代碼中的文字名(literal name)currentnamespacefoo。定義命名空間

雖然任意合法的PHP代碼都可以包含在命名空間中,但只有以下類型的代碼受命名空間的影響,

它們是:

類(包括抽象類和traits) 接口 函數(shù) 常量

命名空間通過關(guān)鍵字 namespace 來聲明。如果一個(gè)文件中包含命名空間,它必須在其它所有代碼之前聲明命名空間,除了一個(gè)以外:declare關(guān)鍵字。

<html><?phpnamespace MyProject; // 致命錯(cuò)誤 - 命名空間必須是程序腳本的第一條語句?>

Example 聲明單個(gè)命名空間

<?phpnamespace MyProject;const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */ }?>在同一個(gè)文件中定義多個(gè)命名空間

定義多個(gè)命名空間,推薦用大括號(hào)語法

<?phpnamespace MyProject {const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */ }}namespace AnotherProject {const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */ }}?>

在實(shí)際的編程實(shí)踐中,非常不提倡在同一個(gè)文件中定義多個(gè)命名空間。這種方式的主要用于將多個(gè) PHP 腳本合并在同一個(gè)文件中。

將全局的非命名空間中的代碼與命名空間中的代碼組合在一起,只能使用大括號(hào)形式的語法。全局代碼必須用一個(gè)不帶名稱的 namespace 語句加上大括號(hào)括起來,例如:

<?phpdeclare(encoding=’UTF-8’);namespace MyProject {const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */ }}namespace { // 全局代碼session_start();$a = MyProjectconnect();echo MyProjectConnection::start();}?>namespace關(guān)鍵字和__NAMESPACE__常量

常量__NAMESPACE__的值是包含當(dāng)前命名空間名稱的字符串。

如果不包括在任何命名空間中的代碼,則為一個(gè)空的字符串。

<?phpnamespace MyProject;echo ’'’, __NAMESPACE__, ’'’; // 輸出 'MyProject'?><?phpecho ’'’, __NAMESPACE__, ’'’; // 輸出 ''?>

關(guān)鍵字 namespace 可用來顯式訪問當(dāng)前命名空間或子命名空間中的元素。它等價(jià)于類中的 self 操作符。

<?phpnamespace MyProject;use blahblah as mine; // see 'Using namespaces: importing/aliasing'blahmine(); // calls function MyProjectblahmine()namespaceblahmine(); // calls function MyProjectblahmine()namespacefunc(); // calls function MyProjectfunc()namespacesubfunc(); // calls function MyProjectsubfunc()namespacecname::method(); // calls static method 'method' of class MyProjectcname$a = new namespacesubcname(); // instantiates object of class MyProjectsubcname$b = namespaceCONSTANT; // assigns value of constant MyProjectCONSTANT to $b?>使用命名空間:別名/導(dǎo)入

允許通過別名引用或?qū)胪獠康耐耆薅Q,是命名空間的一個(gè)重要特征。這有點(diǎn)類似于在類 unix 文件系統(tǒng)中可以創(chuàng)建對(duì)其它的文件或目錄的符號(hào)連接。

在PHP中,別名是通過操作符 use 來實(shí)現(xiàn)的.

<?phpuse MyFullClassname as Another, MyFullNSname;$obj = new Another; // 實(shí)例化 MyFullClassname 對(duì)象NSnamesubnsfunc(); // 調(diào)用函數(shù) MyFullNSnamesubnsfunc?>全局空間

如果沒有定義任何命名空間,所有的類與函數(shù)的定義都是在全局空間,與 PHP 引入命名空間概念前一樣。在名稱前加上前綴 表示該名稱是全局空間中的名稱,即使該名稱位于其它的命名空間中時(shí)也是如此。

<?phpnamespace ABC;/* 這個(gè)函數(shù)是 ABCfopen */function fopen() { /* ... */ $f = fopen(...); // 調(diào)用全局的fopen函數(shù) return $f;} ?>使用命名空間:后備全局函數(shù)/常量

在一個(gè)命名空間中,當(dāng) PHP 遇到一個(gè)非限定的類、函數(shù)或常量名稱時(shí),它使用不同的優(yōu)先策略來解析該名稱。

類名稱總是解析到當(dāng)前命名空間中的名稱。因此在訪問系統(tǒng)內(nèi)部或不包含在命名空間中的類名稱時(shí),必須使用完全限定名稱,

<?phpnamespace ABC;class Exception extends Exception {}$a = new Exception(’hi’); // $a 是類 ABCException 的一個(gè)對(duì)象$b = new Exception(’hi’); // $b 是類 Exception 的一個(gè)對(duì)象$c = new ArrayObject; // 致命錯(cuò)誤, 找不到 ABCArrayObject 類?>

對(duì)于函數(shù)和常量來說,如果當(dāng)前命名空間中不存在該函數(shù)或常量,PHP 會(huì)退而使用全局空間中的函數(shù)或常量。

<?phpnamespace ABC;const E_ERROR = 45;function strlen($str){ return strlen($str) - 1;}echo E_ERROR, 'n'; // 輸出 '45'echo INI_ALL, 'n'; // 輸出 '7' - 使用全局常量 INI_ALLecho strlen(’hi’), 'n'; // 輸出 '1'if (is_array(’hi’)) { // 輸出 'is not array' echo 'is arrayn';} else { echo 'is not arrayn';}?>

PHP 官方文檔:

http://php.net/manual/zh/language.namespaces.php

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

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

標(biāo)簽: PHP
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品午夜久久| 欧美日韩国产欧| 激情久久五月| 亚洲乱码视频| 久久青草久久| 久色成人在线| 欧美日韩免费看片| 日韩国产欧美在线播放| 91成人精品视频| 97se综合| 狠狠色狠狠色综合日日tαg| 视频一区二区中文字幕| 亚洲欧美在线专区| 成人影视亚洲图片在线| 亚洲a一区二区三区| jiujiure精品视频播放| 激情婷婷综合| 午夜亚洲福利在线老司机| 婷婷综合福利| 久久精品国产成人一区二区三区| 精品久久国产一区| 欧美日韩一二| 亚洲97av| 国产视频一区二区在线播放| 国产在线看片免费视频在线观看| 在线成人直播| 久久婷婷久久| 日本在线成人| 国产精品蜜芽在线观看| 国产手机视频一区二区| 国产精品日本一区二区不卡视频| 深夜福利视频一区二区| 亚洲午夜免费| 精精国产xxxx视频在线野外| 老牛国产精品一区的观看方式| 国产精品永久| 999久久久精品国产| 视频在线观看一区| 91福利精品在线观看| 91综合网人人| 亚洲精品九九| 日韩精品久久久久久久电影99爱| 亚洲精品护士| 天堂中文在线播放| 日本va欧美va瓶| 日韩欧美一区二区三区免费观看| 日韩精品中文字幕吗一区二区 | 狠狠躁少妇一区二区三区| 亚洲欧美不卡| 欧美激情国产在线| 日本不卡高清视频| 国产综合精品| 国产欧美在线观看免费| 女同性一区二区三区人了人一 | 91精品国产自产观看在线| 亚洲va中文在线播放免费| 欧美在线看片| 91超碰国产精品| 国产精品xx| 日韩一级网站| 日本欧美不卡| 国产精品sss在线观看av| 蜜臀a∨国产成人精品| 久久一区二区三区电影| 日本成人一区二区| 精品一区欧美| 神马久久午夜| 日韩综合在线| 国产精品入口久久| 亚洲三级观看| 香蕉精品视频在线观看| 欧美天堂视频| 国产伊人久久| 久久91视频| 国产乱子精品一区二区在线观看| 久久不射中文字幕| 激情婷婷久久| 久久国产主播| 日韩免费福利视频| 精品免费视频| 国产精品hd| 欧美日韩亚洲一区三区| 亚洲精品麻豆| 日本在线视频一区二区| 久久不射网站| 蜜桃一区二区三区在线观看| 午夜日韩av| 神马午夜在线视频| 黑森林国产精品av| 中文字幕人成乱码在线观看| 色乱码一区二区三区网站| 久久尤物视频| 国产一区不卡| 欧美xxxx中国| 亚洲人成在线网站| 国产精品久久久久av电视剧| 中文在线中文资源| 欧美日韩一区二区三区视频播放| 天堂中文在线播放| 久久久精品久久久久久96| 91精品亚洲| 日韩一区二区免费看| 免费在线看一区| 亚洲精品国产精品粉嫩| 日韩av一区二区在线影视| 日韩精品一区二区三区中文字幕| 日本不卡高清| 欧美偷窥清纯综合图区| 国产极品久久久久久久久波多结野| 欧美久久精品| 国产不卡av一区二区| 国产精品久久久久蜜臀| 欧美精品高清| 99成人在线| 亚洲欧洲av| 国产精品xxx| 国产v日韩v欧美v| 久久视频国产| 亚洲我射av| 精品一区二区三区的国产在线观看 | 五月天av在线| 午夜精品一区二区三区国产| 视频一区中文字幕| 日韩高清不卡在线| 精品成av人一区二区三区| 久久精品国内一区二区三区水蜜桃| 香蕉国产精品| 欧美日韩国产一区二区在线观看| 激情综合婷婷| 欧美久久精品一级c片| 中文视频一区| 久久gogo国模啪啪裸体| 成人va天堂| 一本一道久久a久久| 久久久免费人体| 四虎4545www国产精品| 三级欧美韩日大片在线看| 国产精品久久久久久久久久久久久久久 | 日韩高清一区在线| 精品美女在线视频| 黄页网站一区| 97久久超碰| 日韩在线免费| 国产视频一区三区| 国产精品a级| 亚洲欧美综合| 国产麻豆一区二区三区精品视频| 99久久夜色精品国产亚洲1000部| 美国三级日本三级久久99| 欧美aⅴ一区二区三区视频| 激情六月综合| 美女国产精品久久久| 国产一区二区高清| 欧美a级一区二区| 国产高清一区二区| 麻豆精品av| 亚洲精品乱码| 免费国产自久久久久三四区久久 | 老司机精品视频网| 尹人成人综合网| 精品一区视频| 中文字幕一区二区三区日韩精品| 久久久久久夜| 欧美色综合网| 免费日韩av片| 亚洲精品一区三区三区在线观看| 国产日产精品_国产精品毛片 | 尤物tv在线精品| 国产精品亚洲综合在线观看| 2023国产精品久久久精品双 | 亚洲一区资源| 国产欧美日韩视频在线| 免费国产自线拍一欧美视频| 成人午夜精品| 精品视频91| 欧美一级二级视频| 久久福利毛片| 欧美不卡在线| 日韩欧美精品一区| 国产高清亚洲| 日韩高清不卡一区| 中文亚洲欧美| 国产综合精品| 久久天堂av| 国产91在线精品| 国产精品久久久久久久久久久久久久久 | 日本中文字幕视频一区| 亚洲精品午夜av福利久久蜜桃| 成人在线免费观看91| 国产亚洲精品美女久久| 视频一区在线播放| 香蕉成人久久| 99精品视频在线观看免费播放| 精品一区二区三区中文字幕 | 日韩av午夜在线观看| 免费成人性网站| 每日更新成人在线视频| 99re国产精品| 尹人成人综合网| 蜜桃国内精品久久久久软件9|