我上课了.
Class User {
private $_name;
private $_email;
public static function factory() {
return new __CLASS__;
}
public function test() {
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用下面的语法进行静态方法调用时.
User::factory();
Run Code Online (Sandbox Code Playgroud)
它会引发语法错误.
Parse error: syntax error, unexpected T_CLASS_C in htdocs/test/index.php on line 8
Run Code Online (Sandbox Code Playgroud)
抛出错误是因为Static factory()方法在静态方法调用期间无法创建对象.
当我将魔法常量更改为__CLASSS__当前类的名称时,即User它然后起作用.
我错过了什么?
Boo*_*eus 10
尝试:
Class User {
private $_name;
private $_email;
public static function factory() {
$class = __CLASS__;
return new $class;
}
public function test() {
}
}
Run Code Online (Sandbox Code Playgroud)
不确定为什么你的例子不起作用.但什么做的工作是:
public static function factory()
{
return new self();
}
Run Code Online (Sandbox Code Playgroud)