Bu kod 56 olarak sonuç üretir.
function x ($y) {
function y ($z) {
return ($z*2);
}
return($y+3);
}
$y = 4;
$y = x($y)*y($y);
echo $y;
Herhangi bir fikir ne içeride oluyor? Kafam karıştı.
X iadeler (değeri +3), ise Y iadeler (değer * 2)
4 değeri göz önüne alındığında, bu gelir (4+3) * (4*2) = 7 * 8 = 56
.
Burada fonksiyonların yerleştirilmesi herhangi bir fark yapmaz. Fonksiyonlar demektir, kapsamı sınırlı olmadığını yapabilirsiniz güvenle 'yuva' fonksiyon tanımları, hâlâ dosyada her yerde onları aramak mümkün olurken. Temelde, deftere kod farklı değildir
function x ($y)
{
return($y+3);
}
function y ($z)
{
return ($z*2);
}
Except for the fact that it's a lot less readable.
(4+3)*(4*2) == 56
Sadece ana fonksiyonu kapsamında tanımlandığı gibi PHP, gerçekten, "iç içe fonksiyonları" desteklemiyor unutmayın. Tüm fonksiyonlar global tanımlanır. docs bakın.
It is possible to define a function from inside another function. the inner function does not exist until the outer function gets executed.
echo function_exists("y") ? 'y tanımlanmaktadır\n' : 'y tanımlanmamıştır \n';
$x=x(2);
echo function_exists("y") ? 'y tanımlanmaktadır\n' : 'y tanımlanmamıştır \n';
Çıktı
y tanımlanmamıştır
y tanımlanmaktadır
Basit bir şey, idam x önce fonksiyon y arayamam