命名空间的解析可以发生在方法User
中,而不是作为方法本身的属性。
在代码中:
class model {
private $user = false;
public function User () {
if ($this->user == false)
$this->user = new Core\User(); // <--- namespace use happens here
return $this->user;
}
}
因此,方法的返回是命名空间User
中的类,方法是其中的一部分。User
Core
User_Friends()
编辑
我建议您再看一下文档以及“基础知识”文章。
编辑 2__NAMESPACE__
用于从重载方法中确定要在哪个命名空间中操作
:
class model {
private $objects = array();
public function __call($name, $arguments=false) {
$ns = __NAMESPACE__;
if (strlen($ns) < 1)
$ns = 'none';
if (!isset($this->objects[$ns]))
$this->objects[$ns] = array();
if (!isset($this->objects[$ns][$name])) {
$class_desc = (strlen($ns) > 0 ? __NAMESPACE__ . '\\' : ''). $name;
$this->objects[$ns][$name] = new $class_desc($arguments);
}
return $this->objects[$ns][$name];
}
}