PHP类抛出错误,出了什么问题

Ibr*_*mar 9 php class

我上课了.

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)

  • `return get_class($ this);` (2认同)

Dec*_*ler 8

不确定为什么你的例子不起作用.但什么的工作是:

public static function factory()
{
    return new self();
}
Run Code Online (Sandbox Code Playgroud)


JRL*_*JRL 7

试试这个:

$class = __CLASS__;
return new $class;
Run Code Online (Sandbox Code Playgroud)