我有一个异常类:
namespace abc;
class AbcException extends Exception {
// blah blah
}
它产生了这个错误:
Class 'abc\Exception' not found ...
问题:
我能做些什么来完成这项工作?
赞赏有用的文件。
感谢您阅读我的问题
答案 0 :(得分:26)
我可以做些什么来完成这项工作?
使用前导反斜杠表示全局命名空间:
namespace abc;
class AbcException extends \Exception {
// blah blah
}
赞赏有用的文件。
PHP手册中有an entire page专门讨论这个问题!
答案 1 :(得分:15)
Exception类解析为脚本命名空间(PHP Manual),因为它以:
开头namespace abc;
您可以专门告诉脚本使用哪个例外:
namespace abc;
use Exception;
class AbcException extends Exception {
// blah blah
}
使用此变体,您可以在文件顶部看到“导入”的类。此外,您可以稍后更轻松地更改/别名文件中的每个Exception类。另请参阅Name resolution rules in the PHP Manual。
或者,只要指定了类名,就可以指定具体的命名空间。根命名空间为\
,因此异常的完全限定类名为\Exception
:
namespace abc;
class AbcException extends \Exception {
// blah blah
}
然而,这只会在某些地方运行,但它会使您的代码更加绑定到具体的类名,如果代码库增长并且您开始重构代码,则可能不需要这些类名。
答案 2 :(得分:2)
这只是一个黑色的漏洞。喜欢\例外。
答案 3 :(得分:2)
在包含/扩展其他类OR库时使用“use”是件好事。
radGridView1.CurrentRow.Cells[0].Value
答案 4 :(得分:-1)
在 Windows 下,您不需要前导 \
来表示根命名空间。部署到 *nix 环境后,无论何时使用它,都必须在类名前显式添加 \
,或者在使用它们之前为正在使用的每个根命名空间类放置 use 语句,否则会得到一个 class not found 致命错误。