//util.php
<?php
namespace com\instance\util;
class Debug{
static function sayHello(){
print("Hello,".__NAMESPACE__."\n");
}
}
//main.php
namespace main;
require_once "util.php";
use com\instance\util;
class Debug {
static function sayHello(){
print("Hello,".__NAMESPACE__."\n");
}
}
Debug::sayHello();
util\Debug::sayHello();
以上两个语句分别输出:
Hello,main
Hello,com\instance\util
所以在不同包名中得类名即使相同也不冲突。
有几个要点需要注意:
1.在一个PHP文件中,namespace语句必须放在第一句。可以测试如下:
<?php
require_once "util.php";
namespace main;
class Debug{}
报错:
Namespace declaration statement has to be the very first statement in the script
2.对于不指定包名的PHP文件,可以假定其位于根命名空间的下。通过反斜杠来引用
//global.php
<?php
class Debug{
static function sayHello(){
print("Hello,".__NAMESPACE__."\n");
}
}
//main.php
namespace main;
require_once "global.php";
class Debug {
static function sayHello(){
print("Hello,".__NAMESPACE__."\n");
}
}
Debug::sayHello();
\Debug::sayHello();
输出结果为:
Hello,main
Hello,