本篇文章將開始介紹命名空間。命名空間是一種封裝事物的方法,在很多地方都可以見到這種抽象概念。今天我們就來介紹介紹,有需要的可以參考一下。
首先,我們了解一下什么是命名空間。(有需要的可以參考PHP 命名空間)
在PHP中,名稱空間可以解決編寫類庫或應(yīng)用程序(如類或函數(shù)),創(chuàng)建可重用代碼時,所遇到的問題:
-
用戶編寫的代碼名稱與PHP中的類/函數(shù)/常量或第三方類/函數(shù)/常量的名稱發(fā)生沖突。
-
為用戶編寫的很長的標(biāo)識符名稱創(chuàng)建一個別名(或簡短),提高源代碼的可讀性。
PHP的命名空間提供了一種將相關(guān)的類、函數(shù)和常量組合到一起的途徑。
現(xiàn)在就讓我們正式進入今天的介紹,如何去定義一個命名空間。
首先我們來看一個小栗子。
<?php declare(encoding='UTF-8'); //定義多個命名空間和不包含在命名空間中的代碼 namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace { // 全局代碼 session_start(); $a = MyProjectconnect(); echo MyProjectConnection::start(); } ?>
我們觀察一下,發(fā)現(xiàn)在這兩段代碼中,都有一個共同的特點,就是有關(guān)鍵詞“namespace
”,但是關(guān)鍵詞后面卻并不一樣,這是什么原因呢?等我們學(xué)習(xí)了命名空間知識之后,就會知道啦。
默認情況下,所有常量、類和函數(shù)名都放在全局空間中,就像PHP支持的名稱空間之前一樣。
命名空間通過關(guān)鍵字namespace
來聲明。如果一個文件中包含命名空間,它必須在其它所有代碼之前聲明命名空間。語法格式如下;
<?php // 定義代碼在 'MyProject' 命名空間中 namespace MyProject; // ... 代碼 ...
并且,我們可以在同一個文件中定義不同的命名空間代碼。但是,將全局非命名空間中的代碼與命名空間中的代碼組合時,只能使用大括號中的語法。全局代碼必須用未命名的namespace語句括在大括號中。
同時,聲明名稱空間之前唯一有效的代碼是定義源文件編碼的declare語句。所有非PHP代碼(包括空格)都不能出現(xiàn)在名稱空間聲明之前。
命名空間的命名就說到這里了,有其他想知道的,可以點擊這個哦?!?→php視頻教程