我在大型项目工作,我在代码中找到了这一行。
他们之间有什么区别?
没有构造它如何工作?
有两个变量:
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)
}
答案 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
将始终是被调用的类。