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