命名空间 - 调用自带类的坑

  • 作者:KK

  • 发表日期:2019.03.29


在PHP开发中经常接触的自带的类有stdClassExceptionErrorExceptionReflectionPDO等,像PDO这个其实是 pdo 扩展开启后才有的,好了反正它们的共同特征就是:不需要我们定义,运行脚本第一行就能调的类。

在命名空间模式下,假设命名空间为controllers的话,如果直接new Exception()会出问题,如下面的代码:

namespace controllers;

throw new Exception('xxx');

这样会导致引擎从当前命名空间找Exception这个类,所以使用自带类的正确方法应该是:throw new \Exception('xxx')这样,就是在类名前面加一个\号,表示从顶级命名空间开始查找这个类(因为自带类往往是没有分配命名空间的,所以都在顶级命名空间之中)。

其实还有一个办法,就是先use Exception这样引用,然后就可以throw new Exception('xxx');了。