PHP8 使用命名空間:后備全局函數(shù)/常量

2023-08-17 15:23 更新

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

在一個命名空間中,當 PHP 遇到一個非限定的類、函數(shù)或常量名稱時,它使用不同的優(yōu)先策略來解析該名稱。類名稱總是解析到當前命名空間中的名稱。因此在訪問系統(tǒng)內部或不包含在命名空間中的類名稱時,必須使用完全限定名稱,例如:

示例 #1 在命名空間中訪問全局類

<?php
namespace A\B\C;
class Exception extends \Exception {}

$a = new Exception('hi'); // $a 是類 A\B\C\Exception 的一個對象
$b = new \Exception('hi'); // $b 是類 Exception 的一個對象

$c = new ArrayObject; // 致命錯誤, 找不到 A\B\C\ArrayObject 類
?>

對于函數(shù)和常量來說,如果當前命名空間中不存在該函數(shù)或常量,PHP 會退而使用全局空間中的函數(shù)或常量。

示例 #2 命名空間中后備的全局函數(shù)/常量

<?php
namespace A\B\C;

const E_ERROR = 45;
function strlen($str)
{
return \strlen($str) - 1;
}

echo E_ERROR, "\n"; // 輸出 "45"
echo INI_ALL, "\n"; // 輸出 "7" - 使用全局常量 INI_ALL

echo strlen('hi'), "\n"; // 輸出 "1"
if (is_array('hi')) { // 輸出 "is not array"
echo "is array\n";
} else {
echo "is not array\n";
}
?>


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號