PHP返回new self两个变量

时间:2015-03-31 08:07:46

标签: php class oop return

我在大型项目工作,我在代码中找到了这一行。

他们之间有什么区别?

没有构造它如何工作?

有两个变量:

final public static function make(AbstracClass $variable, array $array = array())
        {
            $Class = get_called_class();

            return new $Class($variable, $array);
        }

一个变量返回new

final public static function make($array = array())
{
    return new self($array)
}

1 个答案:

答案 0 :(得分:1)

由于这些方法具有不同的签名,我只能假设它们是不同类的成员,因此这是他们用不同的参数调用构造的一个原因。

另外,因为你说没有构造函数,我可以假设这些类继承自另一个类,因为可以继承类的构造函数。

调用return new self($array);将始终返回此语句定义的类的实例。

调用get_called_class();将始终返回您正在调用的类,即使此语句存在于继承的类中。

使用此功能的方式:

final public static function make(AbstracClass $variable, array $array = array())
{
    $Class = get_called_class();

    return new $Class($variable, $array);
}

与:

相同
final public static function make(AbstracClass $variable, array $array = array())
{
    return new static($variable, $array);
}

因为self将始终返回该语句定义的类,并且static将始终是被调用的类。