我不认为你可以做这种事情使用::
;但它应该,如果你使用了命名空间分隔符的工作:\
我只是用PHP PHP 5.3.5测试 - 使用::
确实让我一个错误。
使用\,另一方面,工作正常(请参阅下面的示例)。
例如,在全局命名空间是(不在任何具体命名空间)你可以定义一个类SomeClass
:
namespace {
class SomeClass
{
public function method() {
var_dump("child: " . __METHOD__);
}
}
$obj = new SomeNamespace\SomeClass();
$obj->method();
}
而且,在我的例子称为SomeNamespace
一个特定的名称空间,您可以定义一个类SomeClass
,该类将从全局命名空间扩展该类 - 可访问为\SomeClass
:
namespace SomeNamespace {
class SomeClass extends \SomeClass
{
public function method() {
var_dump("parent: " . __METHOD__);
}
}
}
旁注:在这里,我已经使用bracketed syntax,因为我把代码的两个部分在同一个文件(见例3该手册页) - 但它应该与几个文件一样工作。
注意,对于PHP 5.3的第一个Alpha版本,命名空间分隔符不\
,但::
所以,如果你正在使用PHP 5.3的α1或2 (也许3,不知道如果\
之前或之后选择3),使用::
可能工作。
(当然,你不应该使用的α - 尤其是考虑到已经有PHP 5.3的稳定版本了两年)
它执行没有错误?你确定这两个类都在同一个命名空间吗? – zzzzBov
好问题!从来没有见过这样的代码。要么以前的员工是天才,要么是疯子。 – GordonM
我不愿意在这个时候执行这个类。但是,是的!有一行在类定义之上定义了一个名称空间(我更新了这个问题以反映这一点)。 –