네임스페이스 사용: 전역 함수/상수로 대체

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

네임스페이스 내에서 PHP는 클래스 이름, 함수 또는 상수 컨텍스트에서 정규화되지 않은 Name을 발견하면 이를 다른 우선순위로 해결합니다. 클래스 이름은 항상 현재 네임스페이스 이름으로 확인됩니다. 따라서 내부 또는 네임스페이스가 없는 사용자 클래스에 액세스하려면 다음과 같이 정규화된 이름으로 참조해야 합니다.

예제 #1 네임스페이스 내 전역 클래스 액세스

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

$a = new Exception('hi'); // $a is an object of class A\B\C\Exception
$b = new \Exception('hi'); // $b is an object of class Exception

$c = new ArrayObject; // fatal error, class A\B\C\ArrayObject not found
?>
                  
                

함수와 상수의 경우 PHP는 네임스페이스가 있는 함수나 상수가 없으면 전역 함수나 상수로 대체합니다.

예제 #2 네임스페이스 내부의 전역 함수/상수 폴백

                  
<?php
namespace A\B\C;

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

echo E_ERROR, "\n"; // prints "45"
echo INI_ALL, "\n"; // prints "7" - falls back to global INI_ALL

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