日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > PHP > 正文

關于PHP的命名空間

2020-03-24 18:12:47
字體:
來源:轉載
供稿:網友
這篇文章介紹的內容是關于PHP的命名空間 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

什么是PHP命名空間

PHP手冊:從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在操作系統中目錄用來將相關文件分組,對于目錄中的文件來說,它就扮演了命名空間的角色。

命名空間的作用

1.用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。
2.為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。

示例

寫這個命名空間的文章是因為一個朋友剛學這個來問我命名空間到底是個什么東西。我在想怎么簡單的描述出來并且很容易理解。下面我就以幾個簡單的小例子來說明一下我自己對命名空間的理解。

1. 例一
首先我們先建立兩個類文件
a.php

html' target='_blank'>class Test{    public function test()    {        echo "this is A class.";    }}

b.php

class Test{    public function test()    {        echo "this is B class.";    }}

再建立一個index.php文件,來引入以上兩個類并調用其中的方法。
index.php

require_once("a.php");require_once("b.php");

現在運行index.php文件,你會發現有一個致命錯誤: Fatal error: Cannot redeclare class Test in。。。很顯然,無法重新聲明Test類,因為你引入了兩次,而且兩個文件中的類名稱相同,沖突了。這個時候就需要命名空間來解決這個問題,并且很容易。
2. 例二
我們現在把兩個類文件稍作修改。
a.php

namespace a/test;class Test{    public function test()    {        echo "this is A class.";    }}

b.php

namespace b/test;class Test{    public function test()    {        echo "this is B class.";    }}

namespace關鍵字是用來聲明命名空間的。現在運行index.php發現沒有錯誤,修改index.php進行方法調用測試
index.php

require_once("a.php");require_once("b.php");$a = new a/test/Test();$a->test();//頁面輸出:this is A class.

3. 例三
現在有另外一種情況,比如我需要實例化a.php中的Test類多次,那么每次我們都需要命名空間信息完整寫的話比較麻煩怎么辦呢?比如:
index.php

require_once("a.php");require_once("b.php");$a = new a/test/Test();$a_a = new a/test/Test();$a_b = new a/test/Test();$a->test();$a_a->test();//頁面輸出:this is A class.this is A class.

雖然也沒有錯誤,但是你會發現比較麻煩,每次都需要全寫命名空間名稱,雖然不報錯并且可以ctrl+c,ctrl+v,但是不太美觀(^_^)。
你可以這樣做:
index.php

require_once("a.php");require_once("b.php");use a/test/Test;$a = new Test();$a_a = new Test();$a_b = new Test();$a->test();$a_a->test();//頁面輸出:this is A class.this is A class.

use關鍵字是用來引入類,用命名空間的方式表示使用了某個類。后面就可以直接實例化操作
4. 例五
接下來另一個問題又來了,如下:
index.php

require_once("a.php");require_once("b.php");use a/test/Test;use b/test/Test;$a = new Test();$b = new Test();$a->test();$b->test();

很明顯,又一個致命錯誤:Fatal error: Cannot use b/test/Test as Test because the name is already in use in 。。。因為雖然使用了命名空間,但是兩個類名稱相同,都是Test,程序不知道第二個Test類是b.php中的Test類,這時候你就用到了as關鍵字
如:
index.php

require_once("a.php");require_once("b.php");use a/test/Test;use b/test/Test as BTest;$a = new Test();$b = new BTest();$a->test();$b->test();//頁面輸出:this is A class.this is B class.完美解決

as關鍵字是對類名稱定義別名,可以有效防止類名稱相同沖突
5. 例六
下面是另一種情況,我先給出幾個代碼片段,是Yii2框架中的,和框架無關,只是為了演示使用,很多地方都能見到此例。

if (/Yii::$app->request->isPost) {            $post = /Yii::$app->request->post();           ...        }

很顯然這里使用了一個Yii類,但是為什么前面又一個反斜杠”/”,我們先追蹤一下Yii類,有的同學會問怎么追蹤呢,如果你使用的是PHPstorm編輯器,直接按住Ctrl,鼠標點擊類名就會跳到此類類文件中,關于怎么使用PHPstorm編輯器,請查看:PhpStorm破解版及使用教程
下面是Yii類文件代碼段:

/** * Yii bootstrap file. * * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */require(__DIR__ . '/BaseYii.php');class Yii extends /yii/BaseYii{}

你會發現該Yii類并沒有命名空間,我們將這種類叫做全局類,如果要使用需要類前面加入反斜杠”/”
比如我們在a.php同級再建立一個全局類文件:c.php:

class Test{    public function test()    {        echo "this is C class.";    }}

在index.php文件中這樣做即可調用c.php中的test方法

require_once("a.php");require_once("b.php");require_once("c.php");use a/test/Test;use b/test/Test as BTest;$a = new Test();$b = new BTest();$c = new /Test();$a->test();$b->test();$c->test();//頁面輸出:this is C class.this is A class.this is B class.this is C class.

注意:namespace,use,as等關鍵字用法以及全局類的使用。

什么是PHP命名空間

PHP手冊:從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在操作系統中目錄用來將相關文件分組,對于目錄中的文件來說,它就扮演了命名空間的角色。

命名空間的作用

1.用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。
2.為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。

示例

寫這個命名空間的文章是因為一個朋友剛學這個來問我命名空間到底是個什么東西。我在想怎么簡單的描述出來并且很容易理解。下面我就以幾個簡單的小例子來說明一下我自己對命名空間的理解。

1. 例一
首先我們先建立兩個類文件
a.php

class Test{    public function test()    {        echo "this is A class.";    }}

b.php

class Test{    public function test()    {        echo "this is B class.";    }}

再建立一個index.php文件,來引入以上兩個類并調用其中的方法。
index.php

require_once("a.php");require_once("b.php");

現在運行index.php文件,你會發現有一個致命錯誤: Fatal error: Cannot redeclare class Test in。。。很顯然,無法重新聲明Test類,因為你引入了兩次,而且兩個文件中的類名稱相同,沖突了。這個時候就需要命名空間來解決這個問題,并且很容易。
2. 例二
我們現在把兩個類文件稍作修改。
a.php

namespace a/test;class Test{    public function test()    {        echo "this is A class.";    }}

b.php

namespace b/test;class Test{    public function test()    {        echo "this is B class.";    }}

namespace關鍵字是用來聲明命名空間的。現在運行index.php發現沒有錯誤,修改index.php進行方法調用測試
index.php

require_once("a.php");require_once("b.php");$a = new a/test/Test();$a->test();//頁面輸出:this is A class.

3. 例三
現在有另外一種情況,比如我需要實例化a.php中的Test類多次,那么每次我們都需要命名空間信息完整寫的話比較麻煩怎么辦呢?比如:
index.php

require_once("a.php");require_once("b.php");$a = new a/test/Test();$a_a = new a/test/Test();$a_b = new a/test/Test();$a->test();$a_a->test();//頁面輸出:this is A class.this is A class.

雖然也沒有錯誤,但是你會發現比較麻煩,每次都需要全寫命名空間名稱,雖然不報錯并且可以ctrl+c,ctrl+v,但是不太美觀(^_^)。
你可以這樣做:
index.php

require_once("a.php");require_once("b.php");use a/test/Test;$a = new Test();$a_a = new Test();$a_b = new Test();$a->test();$a_a->test();//頁面輸出:this is A class.this is A class.

use關鍵字是用來引入類,用命名空間的方式表示使用了某個類。后面就可以直接實例化操作
4. 例五
接下來另一個問題又來了,如下:
index.php

require_once("a.php");require_once("b.php");use a/test/Test;use b/test/Test;$a = new Test();$b = new Test();$a->test();$b->test();

很明顯,又一個致命錯誤:Fatal error: Cannot use b/test/Test as Test because the name is already in use in 。。。因為雖然使用了命名空間,但是兩個類名稱相同,都是Test,程序不知道第二個Test類是b.php中的Test類,這時候你就用到了as關鍵字
如:
index.php

require_once("a.php");require_once("b.php");use a/test/Test;use b/test/Test as BTest;$a = new Test();$b = new BTest();$a->test();$b->test();//頁面輸出:this is A class.this is B class.完美解決

as關鍵字是對類名稱定義別名,可以有效防止類名稱相同沖突
5. 例六
下面是另一種情況,我先給出幾個代碼片段,是Yii2框架中的,和框架無關,只是為了演示使用,很多地方都能見到此例。

if (/Yii::$app->request->isPost) {            $post = /Yii::$app->request->post();           ...        }

很顯然這里使用了一個Yii類,但是為什么前面又一個反斜杠”/”,我們先追蹤一下Yii類,有的同學會問怎么追蹤呢,如果你使用的是PHPstorm編輯器,直接按住Ctrl,鼠標點擊類名就會跳到此類類文件中,關于怎么使用PHPstorm編輯器,請查看:PhpStorm破解版及使用教程
下面是Yii類文件代碼段:

/** * Yii bootstrap file. * * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */require(__DIR__ . '/BaseYii.php');class Yii extends /yii/BaseYii{}

你會發現該Yii類并沒有命名空間,我們將這種類叫做全局類,如果要使用需要類前面加入反斜杠”/”
比如我們在a.php同級再建立一個全局類文件:c.php:

class Test{    public function test()    {        echo "this is C class.";    }}

在index.php文件中這樣做即可調用c.php中的test方法

require_once("a.php");require_once("b.php");require_once("c.php");use a/test/Test;use b/test/Test as BTest;$a = new Test();$b = new BTest();$c = new /Test();$a->test();$b->test();$c->test();//頁面輸出:this is C class.this is A class.this is B class.this is C class.

注意:namespace,use,as等關鍵字用法以及全局類的使用。

以上就是關于PHP的命名空間 的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
91精品国产全国免费观看 | 中文字幕日韩高清| 中文字幕精品在线视频| 国产一级在线| 国产日韩中文字幕| av一级在线| 中文字幕 亚洲视频| 91精品综合久久| 欧美91精品| 色猫猫国产区一区二在线视频| 欧美日韩久久不卡| 中文字幕日韩高清| 日韩精品在线免费观看| 日韩欧美中文字幕视频| 欧美日韩亚洲一区| 亚洲一区不卡在线| 欧美二三四区| 91精品国产综合久久久久久| 日韩欧美国产亚洲| 国产丝袜一区二区| 日韩在线小视频| 蜜桃视频一日韩欧美专区| 国产黄色在线网站| 欧美日韩在线视频首页| 日韩国产一区久久| 一区免费视频| 成人无遮挡免费网站视频在线观看| 精品999视频| 日韩欧美国产高清| 欧美三级日韩三级| 欧美日韩在线观看一区| 91欧美日韩| 欧美日韩国产免费| 日韩国产一区| 欧美片网站免费| 久久精品国产91精品亚洲| 一级片在线免费看| 日韩一二三四区| 国产日韩精品久久久| 国产午夜精品久久| 精品国产欧美日韩不卡在线观看| av中文在线播放| 亚洲中文字幕在线一区| 日韩国产在线观看一区| 日韩欧美99| 成人a在线观看| 国产一卡2卡3卡免费网站| 久久精品久久久久| 国产亚洲欧美中文| 中文字幕亚洲一区在线观看| 欧美日韩国产高清视频| 欧美日韩中文字幕精品| √新版天堂资源在线资源| 综合激情国产一区| 成年人黄国产| 亚洲欧美99| 日韩视频中文| 国产免费一级| 国产自产视频| 精品婷婷伊人一区三区三| 亚洲一区视频在线观看视频| 国产成人一区二区精品非洲| 日韩黄色在线播放| 国产乱码午夜在线视频| 午夜av一区二区| 亚洲成av人片在线| 欧美日韩国产高清| 久久精品国产成人一区二区三区| 国产欧美日韩中文| 国产免费一级| 日韩三级精品| 日韩视频精品| 午夜伦欧美伦电影理论片| av中文网站| 日韩av二区| 久久久久久久久综合| 国产成人一二三区| 久久精品视频免费看| 中文字幕亚洲二区| 亚洲高清中文字幕| 五月综合激情日本mⅴ| 国产高清不卡av| 欧美日韩在线视频免费观看 | 中文字幕一区二区三区精品| 欧美乱大交xxxxx免费| 国产黄在线看| 日韩欧美成人一区二区三区| 日韩.欧美.亚洲| 亚洲午夜91| 99在线精品视频免费观看20| 日韩中文欧美在线| 精品在线观看一区| 国产婷婷一区二区| 阿v免费在线观看| 日韩不卡在线观看| 欧美日韩国产123区| 91精品国产综合久久久蜜臀粉嫩| 中文字幕日韩视频| 亚洲日产av中文字幕| 亚洲男女av一区二区| 久久久综合av| 日本熟女一区二区| 欧美成人精品在线| 国产区视频在线观看| 在线视频第一页| 亚洲国产无线乱码在线观看| 国产欧美日韩91| 一本久久a久久精品亚洲| 国产一级粉嫩xxxx| 日韩高清在线不卡| 国产在线观看黄色| 欧美日韩久久久| 日韩欧美中文字幕一区| 日韩中文字幕久久| 国产日韩精品电影| 欧美日韩综合不卡| 日韩欧美在线网址| 精品久久久久久综合日本欧美| 国产日韩av一区| 午夜一区二区视频| 99精品999| 日本不卡高清视频一区| 亚洲一级影院| 国产福利久久久| 中文字幕在线官网| 91麻豆免费视频网站| 粉嫩粉嫩芽的虎白女18在线视频| 亚洲欧洲国产视频| 91国内在线| 国产在线www| 亚洲大片精品永久免费| 国产黄色在线看| 日韩不卡中文字幕| 亚洲综合在线中文字幕| 亚洲深夜福利| 日韩高清不卡一区二区| 日韩在线观看a| 日韩精品视频在线观看网址 | 日韩一级网站| 日韩在线视频免费观看| 精品久久久久久无| 色猫猫国产区一区二在线视频| 亚洲影视资源网| 亚洲精品中文字幕乱码三区| 日韩精品综合在线| 亚洲社区在线| 日韩中文欧美在线| 日韩综合精品| 欧美另类专区| 欧美日韩成人一区二区| 欧美日韩在线不卡一区| 久久99久久99精品中文字幕| 国产 欧美 在线| 不卡视频一区二区三区| 国产欧美日韩成人| 亚洲男人在线| 欧美一级手机免费观看片| 久草中文在线观看| 高清一区二区| 欧美日韩在线精品成人综合网| 欧美 日韩 中文字幕| 国产一区深夜福利| 蜜桃久久av| 婷婷综合福利| 免费视频二区| 久久网站免费观看| 在线不卡一区二区| 日韩视频一区在线观看| 日韩精品视频在线观看视频| 日韩在线播放一区二区| 国产三级视频在线播放线观看| 午夜亚洲福利| 国产欧美日韩精品高清二区综合区| 欧美日韩国产综合视频在线观看 | 亚洲a一级视频| 欧美日韩中文另类| 一区二区91| 国产中文伊人| 中文字幕亚洲一区在线观看| 九色蝌蚪视频在线| 日韩三级视频在线看| 日韩视频一区在线观看| 亚洲黄色www| 欧美日韩高清在线一区| 久久综合九色欧美综合狠狠| 国产午夜精品一区二区三区视频| 亚洲欧美中文字幕在线一区| 日韩高清不卡在线| 91日韩欧美| 国产成人精品免费久久久久| 91久久视频| 亚洲欧洲综合另类| 欧美日韩国产在线| 精品中文在线| 欧美日韩一级片在线观看| 在线免费播放av| 91久久久久| 午夜亚洲一区| 国产v日产∨综合v精品视频| 伊人网站在线| 日韩色在线观看| 精品国产免费观看一区| 一区二区三区久久| 欧美日本精品| 日韩欧美在线中文字幕| 不卡一二三区| 日韩精品视频在线观看免费| 欧洲一级精品| 在线日韩精品视频| 不卡在线一区二区| 天天摸日日摸狠狠添| 久久久综合精品| 国产成人精品综合久久久| 亚洲一区在线观看免费| 中文字幕在线视频精品| 久久精品日韩无码| 中文字幕在线中文字幕二区| 日韩在线视频免费观看| 日韩区欧美区| 亚洲最新永久观看在线| 亚洲欧美99| 在线国产91| 最近中文字幕日韩精品| 69av亚洲| 久久视频免费看| 欧美亚洲国产日韩| www.老鸭窝.com| 欧美日韩国产91| 99精品免费观看| 免费在线观看国产黄| 国产 欧美 日韩 在线| 色综合婷婷久久| 91久久精品国产91性色69| 久久久99免费| 中文字幕中文字幕精品| 精品国产欧美成人夜夜嗨| 一区二区91| 日韩欧美国产高清| 久久久精品网| 中文字幕国产日韩| 中文字幕精品一区二| 一区在线播放视频| 狠狠色噜噜狠狠狠狠97| 91欧美在线| 亚洲福利视频专区| 日韩欧中文字幕| 国产欧美综合在线| 尤物av一区二区| 国产三级做爰在线观看| 亚洲精品中文字幕乱码三区| 国产黄在线播放| 久精品在线观看| 欧美日韩高清在线播放| 午夜国产福利一区二区| 日韩欧美在线网站| 国产高清大尺度一区二区不卡| 欧美日韩精品在线视频| 中文字幕亚洲国产| 日韩三级高清在线| 日韩欧美在线字幕| av一区二区高清| 亚洲永久字幕| 国产不卡一区| 91麻豆免费视频网站| 日本黄色一区二区三区| 国产黄在线看| 国产免费久久| 91精品在线观看视频| 亚洲成av人片| 国产在线精品日韩| 正在播放日韩精品| 91久久精品网| 国产成人精品网址| 狠狠色综合色区| 欧美日韩国产亚洲一区| 精品视频123区在线观看| 日韩视频中文字幕| 视频一区视频二区中文| 国产1区在线| 亚洲国内精品视频| 国产三级在线| 中文字幕国产亚洲| 中文字幕99| 99精品视频国产| 午夜亚洲一区| 国产对白在线| 精品欧美日韩在线| 日韩一二三四区| 搞黄在线观看| 亚洲小说春色综合另类网蜜桃| 欧美日韩国产999| 亚洲人成欧美中文字幕| 亚洲黄色www| 日韩欧美三级视频| 欧美亚洲天堂网| 自拍日韩亚洲一区在线| 国产免费不卡av| 国产成人中文字幕| 影音先锋中文字幕在线观看| 欧美1234区| 久久久精品欧美| 日韩一级视频在线观看| 一区二区三区高清在线| 中文字幕 乱码 中文乱码91| 欧美日韩国产中文精品字幕自在自线| 欧美sm一区| 日韩欧美在线视频日韩欧美在线视频| 国产一区日韩| 国产色在线视频| 久久综合久久综合九色| 午夜高潮免费视频| 国产欧美日产一区| 91精品国产91久久久久青草| 国产小视频免费在线观看| 欧美久久久精品| 一区二区三区四区五区视频在线观看| 欧美二区在线观看| 最新中文字幕在线| 国产日韩第一页v| 日韩视频中文| 中文字幕人成乱码在线观看| 另类专区欧美| 午夜国产欧美理论在线播放| 91精品国产乱码久久蜜臀| 91欧美日韩麻豆精品| 久久久精品国产免费观看同学| 国产成人精品av久久| 91精品国产自产在线观看永久∴| 国产在线视频一区二区| 日韩不卡一区二区| 成人精品视频一区| 日韩欧美中文| 亚洲羞羞网站| 欧美自拍一区| 一区二区三区中文字幕在线观看| 国产黄色片大全| 成人精品国产福利| 国产视频aaa| 欧美另类久久久品| 91极品视频在线观看| 欧美日韩视频网站| 一级免费a一片| 日韩视频精品| 一区视频在线播放| 国产激情在线| 一区二区三区四区五区视频在线观看| 日韩欧美国产网站| 日韩欧美一级在线播放| 国产激情三区| 日韩中文字幕网| 亚洲一区三区在线观看| 欧美日韩综合视频| 91精品国产91久久久久久青草| 精品日韩av| 国产69精品久久久久孕妇国产69久久| 国产1区在线| 久久久精品国产99久久精品芒果| 国产三级视频网站| 亚州黄色一级| 亚洲天堂国产视频| 99精品999| 国产小视频在线观看免费| 91精品久久久久久久久| 一区二区中文字幕在线| 日韩av一区在线| 国产亚洲欧美色| www.日韩免费| 精品在线观看一区| 日韩国产一区久久| 精人妻一区二区三区| 日韩.欧美.亚洲| 国产在线一区二区视频| 1024国产在线| 欧美日韩中国免费专区在线看| 欧美国产综合在线V| 国产91久久久久蜜臀青青天草二| 欧美日韩一二三四| 欧美三级在线看| 二区三区不卡不卡视频| 99久久www免费| 精品久久久三级| 国产亚洲一级| 91精品在线国产| 中文 欧美 日韩| 亚洲国产欧美久久| 国产成人精品亚洲| 中文字幕精品www乱入免费视频| 欧美日韩精品不卡| 国产激情久久| 国产第一页在线播放| 日韩精品在线第一页| 在线国产日本| 日韩视频精品在线| 中文字幕日韩欧美在线| av三级在线播放| 国产日韩精品在线看| 一区二区不卡视频| 亚洲.国产.中文慕字在线| 中文官网资源新版中文第二页在线观看 | 顶级网黄在线播放|