我上课了。
Class User {
private $_name;
private $_email;
public static function factory() {
return new __CLASS__;
}
public function test() {
}
}
当我使用下面的语法进行静态方法调用时。
User::factory();
它会引发语法错误。
Parse error: syntax error, unexpected T_CLASS_C in htdocs/test/index.php on line 8
抛出错误,因为Static factory()方法在静态方法调用期间无法创建对象。
当我将魔法常量__CLASSS__
更改为当前类的名称,即User
时,它就可以了。
我错过了什么?
答案 0 :(得分:10)
尝试:
Class User {
private $_name;
private $_email;
public static function factory() {
$class = __CLASS__;
return new $class;
}
public function test() {
}
}
答案 1 :(得分:8)
不确定为什么你的例子不起作用。但 的工作原理是:
public static function factory()
{
return new self();
}
答案 2 :(得分:7)
试试这个:
$class = __CLASS__;
return new $class;
答案 3 :(得分:3)
为什么不返回self
或$this
?
查看单身模式:http://www.phpbar.de/w/Singleton和http://php.net/manual/language.oop5.patterns.php
其他解决方案是
return clone $this;