php基礎 命名空間 白帽子菜鳥

2021-10-05 13:51:24 字數 3400 閱讀 7528

什麼是命名空間?從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在作業系統中目錄用來將相關檔案分組,對於目錄中的檔案來說,它就扮演了命名空間的角色。具體舉個例子,檔案 foo.txt 可以同時在目錄/home/greg 和 /home/other 中存在,但在同乙個目錄中不能存在兩個 foo.txt 檔案。另外,在目錄 /home/greg 外訪問 foo.txt 檔案時,我們必須將目錄名以及目錄分隔符放在檔名之前得到 /home/greg/foo.txt。這個原理應用到程式設計領域就是命名空間的概念。

在php中,命名空間用來解決在編寫類庫或應用程式時建立可重用的**如類或函式時碰到的兩類問題:

使用者編寫的**與php內部的類/函式/常量或第三方類/函式/常量之間的名字衝突。

為很長的識別符號名稱(通常是為了緩解第一類問題而定義的)建立乙個別名(或簡短)的名稱,提高源**的可讀性。

預設情況下,所有常量、類和函式名都放在全域性空間下,就和php支援命名空間之前一樣。

<?php 

//建立乙個名為'article'的命名空間

namespace

article

;?>

下面有兩個錯誤示範

0x00

<?php 

$path

="/"

;class

comment

namespace

article

;?>

0x01

<

/html>

<?php

namespace

article

;?>

namespace

article

;class

comment

namespace

message

;class

comment

在兩個命名空間內建立兩個comment類元素

小朋友你是不是會有很多的問號?

comment 元素將被看作無範圍的元素也不含任何子物件。

這東西遵循乙個順序原則請看下方:

namespace

article

;class

comment

}namespace

message

;class

comment

//呼叫當前空間message的命名空間comment類

$comment

=new

comment()

;var_dump

($comment);

//呼叫article空間的comment類

$article

=new

\article\comment()

;

遵循就近原則呼叫。fp:

namespace

article

;const

path

='/article'

;function

getcommenttotal()

class

comment

namespace

messageboard

;const

path

='/message_board'

;function

getcommenttotal()

class

comment

//呼叫當前空間的常量、函式和類

echo

path

;///message_board

echo

getcommenttotal()

;//300

$comment

=new

comment()

;echo""

;//呼叫article空間的常量、函式和類

然後我的確得到了article空間的元素資料。

我們其實上面的**已經略微的提到了乙個子空間內容比如說呢

//我用這樣的命名空間表示處於blog下的article模組

namespace

blog\article

;class

comment

//我用這樣的命名空間表示處於blog下的message board模組

namespace

blog\messageboard

;class

comment

//呼叫當前空間的類

$comment

=new

comment()

;//呼叫blog\article空間的類

$article_comment

=new

\blog\article\comment()

;

如果同屬乙個專案那就是乙個大空間哦

<?php 

function

getip()

class

filterxss

?>

在乙個命名空間裡引入這個指令碼,指令碼裡的元素不會歸屬到這個命名空間。如果這個指令碼裡沒有定義其它命名空間,它的元素就始終處於公共空間中:

<?php 

namespace

blog\article

;//引入指令碼檔案

include

'./common_inc.php'

;$filter_xss

=new

filterxss()

;//出現致命錯誤:找不到blog\article\filterxss類

$filter_xss

=new

\filterxss()

;//正確

?>

php 命名空間,PHP使用命名空間

介紹 命名空間中的類,函式或常量可以通過以下方式使用 在當前命名空間中使用類 指定相對於當前命名空間的命名空間 提供命名空間的全限定名稱 從當前命名空間 在此示例中,從test1.php載入了命名空間。沒有命名空間引用的函式或類名稱將訪問當前命名空間中的功能或類名稱 示例 test1.php nam...

php命名空間

namespace misszhou function var dump a 1 var dump var dump 1 表示呼叫全域性 解決常量的衝突問題 有點像子目錄的概念 namespace meizi 必須放第一行 include func.inc.php function one func...

php 命名空間

使用命名空間 別名 匯入,允許通過別名引用或匯入外部的完全限定名稱,是命名空間的乙個重要特徵。這有點類似於在類 unix 檔案系統中可以建立對其它的檔案或目錄的符號連線。所有支援命名空間的php版本支援三種別名或匯入方式 為類名稱使用別名 為介面使用別名或為命名空間名稱使用別名。php 5.6開始允...