麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

PHP中命名空間這部分內容的詳解

2020-03-22 20:01:23
字體:
來源:轉載
供稿:網友
這篇文章給大家介紹的內容是關于PHP中命名空間這部分內容的詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

PHP的命名空間(namespace)是php5.3之后才有的。這個概念在C#中已經很早就有了,php中的namespace其實和c#的概念是一樣的。

為什么php中要使用namespace?

假設如果不使用namespace,那么每個類在一個項目中的名字就必須是固定的。因為php在new的時候不管是調用autoload還是調用已加載過的類,都存在一個類名對應的文件。所以在沒有namespace的時候,我們會想各種命名規則來區分不同的類,比如project1_school1_html' target='_blank'>class1_Student或者project2_school_class_Student。

引入namespace之后就可以將這個有效規避了,一個namespace就相當于對應一個文件路徑,查找這個類的時候,就會去對應的文件路徑查找類定義文件了。

namespace的定義和使用

定義:

 ?php

namespace Myproject;

或者

 ?php

namespace Myproject {

}

使用:

 ?php

use Myproject/School;
 ?php

use Myproject/School as School1; // 別名

命名空間是運行時解析的。use就相當于一種聲明,并不解析和加載。比如下面這個例子:

test.php

 ?php
use my/name;
require_once( /home/yejianfeng/handcode/test/namespace1.php
$a = new my/name/A();
$a- Print1();

namespace1.php

 ?php
namespace my/name;
class A {
public function Print1(){
echo 11;
}
}

雖然require_once在use下面,也是可以正常運行的,因為程序只有在new my/name/A()的時候才去加載命名空間my/name

全局類和命名空間類

如果要new一個全局類使用 new /A()

如果要new一個命名空間類,使用new my/namespace/A()

命名空間的順序

自從有了命名空間之后,最容易出錯的該是使用類的時候,這個類的尋找路徑是什么樣的了。

如果能弄清楚manual中的這個例子就能全部弄清楚尋找順序了。

 ?php
namespace A;
use B/D, C/E as F;

// 函數調用

foo(); // 首先嘗試調用定義在命名空間 A 中的函數foo()
// 再嘗試調用全局函數 foo

/foo(); // 調用全局空間函數 foo

my/foo(); // 調用定義在命名空間 A/my 中函數 foo

F(); // 首先嘗試調用定義在命名空間 A 中的函數 F
// 再嘗試調用全局函數 F

// 類引用

new B(); // 創建命名空間 A 中定義的類 B 的一個對象
// 如果未找到,則嘗試自動裝載類 A/B

new D(); // 使用導入規則,創建命名空間 B 中定義的類 D 的一個對象
// 如果未找到,則嘗試自動裝載類 B/D

new F(); // 使用導入規則,創建命名空間 C 中定義的類 E 的一個對象
// 如果未找到,則嘗試自動裝載類 C/E

new /B(); // 創建定義在全局空間中的類 B 的一個對象
// 如果未發現,則嘗試自動裝載類 B

new /D(); // 創建定義在全局空間中的類 D 的一個對象
// 如果未發現,則嘗試自動裝載類 D

new /F(); // 創建定義在全局空間中的類 F 的一個對象
// 如果未發現,則嘗試自動裝載類 F

// 調用另一個命名空間中的靜態方法或命名空間函數

B/foo(); // 調用命名空間 A/B 中函數 foo

B::foo(); // 調用命名空間 A 中定義的類 B 的 foo 方法
// 如果未找到類 A/B ,則嘗試自動裝載類 A/B

D::foo(); // 使用導入規則,調用命名空間 B 中定義的類 D 的 foo 方法
// 如果類 B/D 未找到,則嘗試自動裝載類 B/D

/B/foo(); // 調用命名空間 B 中的函數 foo

/B::foo(); // 調用全局空間中的類 B 的 foo 方法
// 如果類 B 未找到,則嘗試自動裝載類 B

// 當前命名空間中的靜態方法或函數

A/B::foo(); // 調用命名空間 A/A 中定義的類 B 的 foo 方法
// 如果類 A/A/B 未找到,則嘗試自動裝載類 A/A/B

/A/B::foo(); // 調用命名空間 A/B 中定義的類 B 的 foo 方法
// 如果類 A/B 未找到,則嘗試自動裝載類 A/B
?

相關文章推薦:

php變量的命名規則以及php變量的用法(附代碼)

php如何利用32進制實現對id的加密解密(附代碼)

以上就是PHP中命名空間這部分內容的詳解的詳細內容,PHP教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩色视频在线观看 | 黄色网址免费入口 | 激情宗合网 | 亚洲少妇诱惑 | 国产成视频在线观看 | 原来神马影院手机版免费 | 99精品视频在线观看免费播放 | 久久国产一级片 | 中文字幕国产欧美 | av电影在线网 | avav在线播放 | 国产成人精品免高潮在线观看 | 禁漫天堂久久久久久久久久 | 一二区电影 | 一区二区精品视频在线观看 | 国产精品99久久99久久久二 | 国产三级三级三级三级 | h视频在线免费观看 | 久久久青青草 | 噜噜在线视频 | 国产精品91在线 | 黄色成人av在线 | 天天看天天摸天天操 | 日日鲁一鲁视频 | 黄网站免费在线看 | 国产精品一区二区免费在线观看 | 色妞欧美 | 国产麻豆交换夫妇 | 一级做a爱片毛片免费 | 久久艹一区 | 羞羞视频免费网站 | 黄色片视频观看 | 久久这| 亚洲婷婷日日综合婷婷噜噜噜 | 亚洲小视频网站 | 亚洲啊v在线观看 | 国产欧美一区二区三区免费看 | 狠狠干五月天 | 免费人成在线播放 | 91精品国产免费久久 | 黄色电影免费提供 |