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

时间:2011-08-28 19:39:05

标签: php class

我上课了。

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时,它就可以了。

我错过了什么?

4 个答案:

答案 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/Singletonhttp://php.net/manual/language.oop5.patterns.php

其他解决方案是

return clone $this;