如何使用php的“root”命名空间?

2022-08-30 15:16:14

我有一个异常类:

namespace abc;

class AbcException extends Exception {
// blah blah
}

它会产生以下错误:

Class 'abc\Exception' not found ...

问题:

  1. 我能做些什么来使它工作?

  2. 有用的文件是值得赞赏的。

感谢您阅读我的问题


答案 1

我能做些什么来使它工作?

使用前导反斜杠指示全局命名空间:

namespace abc;

class AbcException extends \Exception {
// blah blah
}

有用的文件是值得赞赏的。

在PHP手册中有一整页专门讨论这个问题!


答案 2

Exception 类被解析为脚本命名空间(PHP 手册),因为它的开头为:

namespace abc;

您可以具体告诉脚本要使用哪个异常,然后:

namespace abc;
use Exception;

class AbcException extends Exception {
// blah blah
}

使用此变体,您可以在文件顶部看到“导入”的类。此外,以后可以更轻松地更改/别名文件中的每个 Exception 类。另请参见 PHP 手册中的名称解析规则

或者,您可以在指定类名时指定具体的命名空间。根命名空间是 ,因此异常的完全限定类名是:\\Exception

namespace abc;

class AbcException extends \Exception {
// blah blah
}

这只适用于任何一种情况,但是,它使你的代码更加绑定到具体的类名,如果代码库增长并且你开始重构代码,则可能不需要这些类名。


推荐