[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所在的命名空间不是根,这里的实例化将提示找不到该类

 

posted @ 2018-07-29 21:59  yiyide266  阅读(176)  评论(0编辑  收藏  举报