PHP는 네임스페이스 내에서 정규화되지 않은 클래스, 함수 또는 상수 이름을 발견하면 다른 우선 순위 전략을 사용하여 이름을 확인합니다. 클래스 이름은 항상 현재 네임스페이스의 이름으로 확인됩니다. 따라서 시스템 내부 또는 네임스페이스에 포함되지 않은 클래스 이름에 액세스할 때는 정규화된 이름을 사용해야 합니다. 예:
예제 #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 类 ?>
함수와 상수의 경우, 함수나 상수가 현재 네임스페이스에 없으면 PHP는 전역 공간의 함수나 상수를 사용하게 됩니다.
예제 2 네임스페이스의 지원되는 전역 함수/상수
<?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"; } ?>