Поскольку эти методы имеют разные сигнатуры я могу только предположить, что они являются членами различных классов, так что это одна из причин для них вызов конструкции с разными аргументами.
Кроме того, поскольку вы говорите, что нет конструктора, я могу предположить, что эти классы наследуются от другого класса, потому что конструктор класса может быть унаследован.
Вызов 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
всегда будет класс это называется.