命名空间 - 调用自带类的坑 ¶
作者:KK
发表日期:2019.03.29
在PHP开发中经常接触的自带的类有stdClass
、Exception
、ErrorException
、Reflection
和PDO
等,像PDO
这个其实是 pdo 扩展开启后才有的,好了反正它们的共同特征就是:不需要我们定义,运行脚本第一行就能调的类。
在命名空间模式下,假设命名空间为controllers
的话,如果直接new Exception()
会出问题,如下面的代码:
namespace controllers;
throw new Exception('xxx');
这样会导致引擎从当前命名空间找Exception
这个类,所以使用自带类的正确方法应该是:throw new \Exception('xxx')
这样,就是在类名前面加一个\
号,表示从顶级命名空间开始查找这个类(因为自带类往往是没有分配命名空间的,所以都在顶级命名空间之中)。
其实还有一个办法,就是先use Exception
这样引用,然后就可以throw new Exception('xxx');
了。