2015-03-31 2 views
1

Я работаю над большим проектом, и я нашел эти строки в коде.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); 
     } 

С одной переменной взамен новой

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

ответ

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 всегда будет класс это называется.

Смежные вопросы