名前空間で、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"; } ?>