[PHP]命名空间的一些要点
1.命名空间前不能接"\";
namespace MyProject\Sub\Level; // it's right; namespace \MyProject\Sub\Level; // it's wrong;
2.访问命名空间下的类/常量/函数是可以带"\"的,可以参考手册命名空间与动态语言特征
namespace namespacename; const constname = "namespaced"; echo constant('\namespacename\constname'), "\n"; // prints namespaced echo constant('namespacename\constname'), "\n"; // also prints namespaced
3.use引入类/常量/函数时,跟访问命名空间下的类/常量/函数一样,是可带可不带"\"的
namespace namespacename; use Exception; $a = new Exception('hi');
或者
namespace namespacename; use \Exception; $a = new Exception('hi');
4.没有声明命名空间的地方统一用根作为命名空间,即"\"
5.在命名空间中调用别的命名空间,必须按照当前命名空间作为绝对或相对路径
namespace imageHandler\stamp; class Common extends \imageHandler\Decorator { } //在imageHandler\stamp下调用上一层的Decorator,需要完整(绝对)路径:\imageHandler\Decorator
6.基于字符串变量动态调用的类/常量/函数名,必须使用绝对路径
$o = 'Rules'; new $o();//如果Rules所在的命名空间不是根,这里的实例化将提示找不到该类