X powraca (wartość + 3), a Y powraca (wartości a * 2)
względu wartość 4, co oznacza, (4+3) * (4*2) = 7 * 8 = 56
.
Chociaż funkcje nie są w ograniczonym zakresie (co oznacza, że można bezpiecznie definicje funkcji „gniazdo”), w tym szczególnym przykładem jest podatna na błędy:
1) Nie można nazwać y()
przed wywołaniem x()
, ponieważ funkcja y()
nie zostanie faktycznie zdefiniowana, dopóki nie zostanie wykonana jedna operacja: x()
.
2) Wywołanie x()
dwukrotnie spowoduje PHP do funkcji y()
redeclare, co prowadzi do śmiertelnego błędu:
Fatal error: Cannot redeclare y()
Rozwiązaniem zarówno byłoby podzielić kod tak, że obie funkcje są uznane za niezależne od siebie inne:
function x ($y)
{
return($y+3);
}
function y ($z)
{
return ($z*2);
}
Jest to również bardziej czytelne.
Brzmi jak zadanie domowe, ale nadal jest to dobre pytanie haha. – hobbes3