PHP return new self 两个变量

PHP return new self two vaiables

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

它们有什么区别?

没有构造它如何工作?

有两个变量:

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

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

在 return new

中有一个变量
final public static function make($array = array())
{
    return new self($array)
}

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

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

调用return new self($array);总是return一个class这个语句定义的实例。

调用 get_called_class(); 将始终 return 您正在调用的 class,即使此语句存在于继承的 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 将始终 return 定义语句的 class,而 static 将始终是被调用的 class。