首頁 > 後端開發 > php教程 > PHP命名空間

PHP命名空間

王林
發布: 2024-08-29 13:00:16
原創
821 人瀏覽過

PHP 中的命名空間類似於 C++ 中的命名空間,透過重複使用名稱來封裝項目,以避免名稱衝突。在許多情況下,它也被視為一個抽象概念。它允許在不同的命名空間中重新聲明相同的類別或介面或函數或常數函數,而不會收到致命錯誤。此命名空間是一個按層次標記的程式碼區塊,其中包含普通的 PHP 程式碼。它由有效的 PHP 程式碼組成。此外,它還會影響類別、函數、常數和介面等程式碼類型。命名空間是使用關鍵字namespace來聲明的。

廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

文法:

namespace sample;
登入後複製

這裡聲明了一個命名空間範例。

與其他 PHP 標識符類似,命名空間也應該遵循一些規則。也就是說,命名空間應以下劃線或字母開頭,後面跟著字母、底線或數字。

命名空間在 PHP 中如何運作?

讓我們將命名空間想像為一個櫥櫃,我們可以在其中存放所有物品,例如衣服、配件等。對於每個人來說,都會有一個單獨的櫥櫃來存放他們的物品。為了識別每個人的櫥櫃,可以給每個人貼上標籤,這樣就不會發生任何混亂。過去,程式設計師在常數、類別和函數中使用下劃線分隔程式碼庫。這類似於給每個人的物品貼上標籤並將它們放在一個大櫃子裡。即使有條理,效率也不會高。

在這種情況下,命名空間的概念就出現了。相同的類別、介面、函數和常數可以在不同的命名空間中聲明,而不會出現任何致命錯誤。基本上,命名空間是一個按層次標記的程式碼區塊,其中包含普通的 PHP 程式碼。

正如我們已經提到的,PHP 中的命名空間透過重複使用名稱來封裝項目,以避免名稱衝突。

例如,考慮下面提到的 PHP 程式。

代碼:

<?php
namespace sample ;
function func()
{
echo ' Never give up! Keep trying . . . ' ;
}
// Resolves to the function
func() ;
?>
登入後複製

可以看到存在一個函數 func,並且它在執行程式碼時印出一條文字。

隨著 PHP 程式碼庫大小的增加,有可能會無意間重複使用已宣告的類別名稱或函數。如果新增第三方元件和插件,問題會更加嚴重。此外,名稱衝突問題可以藉助命名空間來解決。 PHP 常數、函數和類別可以聚集到命名空間庫。這些命名空間可以遵循特定的層次結構,類似於電腦上檔案系統中可用的資料夾。子命名空間這個概念對於安排專案結構非常有用。如果專案需要存取資料庫,所有與資料庫相關的程式碼,例如資料庫的異常、連接處理程序,都可以保存在名為 DB 的子命名空間中。

為了保持靈活性,最好將子命名空間保存在子目錄中。這激發了專案結構,並使遵循標準 PSR-0 的自動加載器變得容易使用。

通常,PHP 會使用反斜線作為命名空間分隔符號。

樣本子樣本
樣本子樣本樣本
CollegeProjCommonWidget

在全域宣告命名空間的情況下,可以不使用任何名稱來聲明它,如下所示。

代碼:

<?php
namespace {
// Global . . . !
}
?>
登入後複製

在某些情況下,一個 PHP 程式碼中可以使用多個命名空間,如下所示。

代碼:

<?php
namespace sam {
}
namespace samp {
}
namespace {
}
?>
登入後複製
注意: 需要注意的是,命名空間必須在 PHP 程式中先聲明。如果下面給出任何程式碼,它將被檢測為無效,因為最初未給出命名空間。

代碼:

<?php
echo "Never Give up ! " ;
namespace Html ;
. . .
?>
登入後複製

PHP 命名空間範例

下面給出的是 PHP 命名空間的範例:

範例#1

使用命名空間並隱式和明確呼叫函數的 PHP 程式。

代碼:

<?php
namespace sample;
function func()
{
echo 'Never give up! Keep trying. . .';
}
// Resolves to the function
func();
// Explicitly resolves to the function
namespace\func();
?>
登入後複製

輸出:

PHP命名空間

在程式中,首先建立了一個命名空間範例。之後,可以看到定義了一個函數func,並且在執行程式碼時列印了一條文字。由於函數被隱式和顯式調用,文字被打印兩次。

假設命名空間是在定義函數之後宣告的,如下所示。那麼,會發生什麼事呢?

代碼:

<?php
function func()
{
echo 'Never give up! Keep trying. . .';
}
// Resolves to the function
func();
namespace sample;
// Explicitly resolves to the function
namespace\func();
?>
登入後複製

Yes…. An error will be displayed, as shown below. That is, namespace should be defined at the beginning of the program.

Output:

PHP命名空間

Example #2

PHP program that uses a namespace and calls a function for printing table details.

Code:

<?php
namespace Html;
class sampletable {
public $heading= "";
public $cntrows= 0;
public function fnc() {
echo "<p> The Table used is '{$this->heading}' that has {$this->cntrows} different rows. . . .</p>";
}
}
$tb= new sampletable ();
$tb->heading= " Students ";
$tb->cntrows= 8 ;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$tb->fnc();
?>
</body>
</html>
登入後複製

Output:

PHP命名空間

In the program, a namespace Html is created first. After that, a class sampletable is created with variables heading, cnt rows. A function func is also present, which contains a text. Heading students and 8 as count of rows were given after that. On executing the code, the line gets printed with the table name and number of rows.

Conclusion

Namespaces in PHP is similar to namespaces in C++ that encapsulates items by reusing names in order to avoid name conflicts. In this article, different aspects such as syntax, working, and examples of size() functions are explained in detail.

以上是PHP命名空間的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板