2016-09-10 2 views
2

Я новичок в Laravel и PHP, поэтому я решил увидеть основной код и попытаться его немного почитать, но когда я достиг этой части, я смущен! как эта функция работает? $this->getAlias($this->aliases[$abstract]); может сам вызов функции? не будет ли он зацикливаться?Как функция может вызвать себя в PHP?

protected function getAlias($abstract) 
    { 
     if (! isset($this->aliases[$abstract])) { 
      return $abstract; 
     } 

     return $this->getAlias($this->aliases[$abstract]); 
    } 

спасибо

+0

если в '' 'return $ this-> getAlias ​​($ this-> aliases [$ abstract]);' 'предоставленный аргумент отличается от предыдущего тем, что может быть проблемой для работы функции? –

+0

Предполагается, что он зациклится. Но программисту это нужно, чтобы он не зацикливался бесконечно. – DanMan

ответ

5

Вы можете прочитать о recursive functions.

рекурсивная функция является функцией, которая называет себя

Эта функция принимает некоторый аргумент и проверяет, имеет ли он псевдоним. Если это произойдет, он называют себя снова и проверяет, если найден псевдоним имеет псевдоним и т.д.

0

Они называются recursive functions ... Это значит, функция не может называть себя до окончательного состояния для ожидаемого результата будет достигнут.

Простой пример для этого было бы ... Умножение 2 до сумма не достигнет 100.

public function multiplication($a, $sum = 0, $times = 0) { 
    if($sum == 100) { 
    return $times; 
    } 
    $sum += $a; 
    $times++; 
    return multiplication($a, $sum, $times); 
} 

echo multiplication(2); 

Выход будет

50 

В функции, написанной в вопросе, то пытаясь проверить, установлено ли все абстрактное значение, переданное как параметр, для этого текущего класса или нет.

Надеюсь, теперь вы свободны от концепции. :)

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