[关闭]
@Chiang 2020-01-10T12:18:21.000000Z 字数 730 阅读 490

使用命名空间:后备全局函数/常量

PHP


在一个命名空间中,当 PHP 遇到一个非限定的类、函数或常量名称时,它使用不同的优先策略来解析该名称。类名称总是解析到当前命名空间中的名称。因此在访问系统内部或不包含在命名空间中的类名称时,必须使用完全限定名称,例如:

  1. <?php
  2. namespace A\B\C;
  3. class Exception extends \Exception {}
  4. $a = new Exception('hi'); // $a 是类 A\B\C\Exception 的一个对象
  5. $b = new \Exception('hi'); // $b 是类 Exception 的一个对象
  6. $c = new ArrayObject; // 致命错误, 找不到 A\B\C\ArrayObject 类
  7. ?>

对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP 会退而使用全局空间中的函数或常量。 For functions and constants, PHP will fall back to global functions or constants if a namespaced function or constant does not exist.

  1. <?php
  2. namespace A\B\C;
  3. const E_ERROR = 45;
  4. function strlen($str)
  5. {
  6. return \strlen($str) - 1;
  7. }
  8. echo E_ERROR, "\n"; // 输出 "45"
  9. echo INI_ALL, "\n"; // 输出 "7" - 使用全局常量 INI_ALL
  10. echo strlen('hi'), "\n"; // 输出 "1"
  11. if (is_array('hi')) { // 输出 "is not array"
  12. echo "is array\n";
  13. } else {
  14. echo "is not array\n";
  15. }
  16. ?>
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注