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。
我在大型项目中工作,我在代码中发现了这一行。
它们有什么区别?
没有构造它如何工作?
有两个变量:
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。