本文目錄一覽:
- 1、PHP中不同文件夾使用相同的命名空間,相互之間應該如何調用呢?能不能舉例說明一下。
- 2、PHP的命名空間使用方法,求寫實例
- 3、PHP與composer結合-使用命名空間實現文件自動載入
- 4、thinkphp命名空間有什麼作用,怎麼使用
- 5、php use php namespace 到底是怎麼一回事?
PHP中不同文件夾使用相同的命名空間,相互之間應該如何調用呢?能不能舉例說明一下。
那麼在不同文件中命名相同的命名空間就表示在一個容器下…不過在不同目錄下相同的命名空間我還不是太清楚.一般都是在一個項目文件下的…我去找找有答案在添加
命名空間可以解決下面兩個問題:
(1)用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字衝突。
(2)為很長的標識符創建一個別名,提高代碼的可讀性,減少代碼的編寫量。
PHP的命名空間使用方法,求寫實例
假設程序涉及文件的輸入和輸出,那麼就要引入system.io這樣一個命名空間。
命名空間的引入主要是為了寫程序時代碼書寫簡單。
比如說filestream這個類,他就是命名空間system.io下的一個類。如果不在文件開頭引入system.io這個命名空間,那麼在程序中用到這個類的時候就要寫成system.io.filestream,相反,如果已經引入了這個命名空間就可以直接寫filestream了。
命名空間就是將一類具有相似相關功能的類和介面等打包。
只要在文件的開頭寫上using
system.io;
就可以直接使用這個命名空間下的類。
PHP與composer結合-使用命名空間實現文件自動載入
composer中文文檔
推薦閱讀
發布自己的composer包
在項目 composer.json 中 autoload 部分里的 files 欄位加入該文件即可:
OK, 然後你就可以在任何地方用到 app/helpers.php 中的函數了.
有些項目習慣使用服務提供者注入類,比如這個項目中的 ExpressCheckProvider 類,然後在 app.php 中 providers 數組中添加
Yuxiaoyang\ExpressCheck\ExpressCheckProvider::class,
綁定了 expresscheck 其實就相當於是 new ExpressCheck(); 這個類。可以使用 app(‘expresscheck’) 直接獲取這個類
thinkphp命名空間有什麼作用,怎麼使用
在php裡邊,同一個應用請求裡邊如果存在兩個方法(類名),他們的名字一樣(例如都是getName()),由於php本身語法規則的限制,系統是要報錯的
解決方法:
① 把他們的名字改為不一樣的 例如 agetName() bgetName()
② 通過命名空間解決
Yii 框架為了避免名字重複引起問題,同步的類前邊都有 C 字樣
1. 簡單應用
a) 命名空間是虛擬的定義空間,不是真實存在目錄
b) 命名空間的分隔符都是反斜杠 \
c) 非限定名稱:getName() 獲得與其最近的命名空間的getName()
d) 限定名稱:beijing\getName() 相對方式 通過最近的命名空間定位beijing\getName()
e) 完全限定名稱: \beijing\getName() 直接在指定的命名空間獲得具體元素
f) 命名空間針對:函數、類名、常量三者其作用,在命名空間裡邊把這三種統稱為元素
2、別名和導入
a) 導入/引入 use
b) 使用一個元素,使用非限定名稱,在當前最接近的空間裡邊獲得元素
c) 如果當前空間裡邊沒有指定元素,也可以在導入的空間裡邊尋找
3、公共空間
a) 第一種情況
b) 沒有使用namespace定義空間,當前空間就是一個公共空間
c) 例如一個有namespace的文件引入了一個沒有namespace的文件程序
d) 沒有namespace的文件空間就是公共空間
e) 在namespace文件裡邊可以通過\斜杠直接訪問公共空間元素
f) function getName(){} ——公共空間的元素
g) namespace beijing;
h) function getName(){} —–beijing空間的元素
i) 第二種情況
j) 當前文件沒有namespace、但是引入的文件有namespace
k) 當前文件就是公共空間,引入文件有自己空間
php use php namespace 到底是怎麼一回事?
namespace Zend\Http\PhpEnvironment;
這句代碼定義了一個命名空間,你可以理解為定義一個名稱為 Zend\Http\PhpEnvironment 的域名。
在定義了之後,下面所申明的class, interface, const等都是在申明的這個「域」裡面的。當引用一個申明了命名空間的包含文件,想要調用這個裡面的東西,那就必須:
調整當前腳本也到這個域名里,否則,就得用namesapce的全稱。
比如,inc.php 文件:
namespace Zend\Http\PhpEnvironment;
class Bar {}//定義了一個類
則其他文件調用時:
// 訪問Foo的第一種方法,用全稱
require ‘inc.php’;
$foo = new \Zend\Http\PhpEnvironment\Bar();
// 訪問Foo的第二種方法
namespace Foo; // 調整當前腳本到Foo這個ns域,而且namespace申明必須在第一句
require ‘inc.php’;
$foo = new Bar();
延展閱讀:
php官方手冊中的相關內容:
在PHP中,namespace命名空間用來解決在編寫類庫或應用程序時創建可重用的代碼如類或函數時碰到的兩類問題:
1. 用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字衝突。
2. 為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。
PHP 命名空間提供了一種將相關的類、函數和常量組合到一起的途徑。
PHP 命名空間支持有兩種使用別名或導入方式:為類名稱使用別名,或為命名空間名稱使用別名, 別名通過操作符 use 來實現。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/258099.html