Php Fonksiyon "redeclare" Hatası
Aşağıdaki iç içe fonksiyon da "redeclare" hatası alıyorum. Mantık hatası nerede acaba. Fonksiyon herhangi bir döngü içinde çağrılmazsa sorunsuz ancak herhangi bir döngü içerisin de "redeclare" hatası alıyor.
function FONKSIYON__DENEME($A, $B){
$Deger1 = $A; $Deger2 = $B;
function FONKSIYON__TOPLAMA($A, $B){
return $A + $B;
}
function FONKSIYON__CARPMA($A, $B){
return $A * $B;
}
return FONKSIYON__TOPLAMA($Deger1, $Deger2)."-".FONKSIYON__CARPMA($Deger1, $Deger2);
}
for($Say = 1; $Say <= 10; $Say++){
echo FONKSIYON__DENEME($Say, 10);
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
Sorun sanırım hafızada olan fonksiyonu php yeniden override etmiyor.
function a() {
echo 'a';
}
function a() {
echo 'a';
}
a();
Şöyle bir kullanımda da aynı hatayı veriyor. Sorun function_exists kullanarak çözülüyor çünkü bir sefer oluşturuluyor, sonra döngüde pas geçiyor.
<?php
function FONKSIYON__DENEME($A, $B){
$Deger1 = $A; $Deger2 = $B;
if (!function_exists("FONKSIYON__TOPLAMA")) {
function FONKSIYON__TOPLAMA($A, $B){
return $A + $B;
}
}
if (!function_exists("FONKSIYON__CARPMA")) {
function FONKSIYON__CARPMA($A, $B){
return $A * $B;
}
}
return FONKSIYON__TOPLAMA($Deger1, $Deger2)."-".FONKSIYON__CARPMA($Deger1, $Deger2);
}
for($Say = 1; $Say <= 10; $Say++){
echo FONKSIYON__DENEME($Say, 10);
}