PDA

View Full Version : سوال: صدا کردن یک متد public تو خود اون متد



css-man
یک شنبه 30 آذر 1393, 00:26 صبح
دوستان من میخوام یه تابع رو توی خودش دوباره صدا کنم
البته این تابع جزو یک کلاسه
چطور میشه این کارو کرد؟
اصلا امکانش هست؟





public function menusReader($parent_id = 0){
$parent = $this->Database->Escape($parent_id);
$result = $this->Database->ArrayQuery("SELECT * FROM `menus` WHERE(`status`= 1 AND `parent_id` = {$parent}) ORDER BY `id` ");
if($result && count($result) > 0){
foreach($result as $values){
echo "<option value=\"{$values['id']}\">{$values['name']}</option>";
$this->menusReader($values['parent_id']);
}
}
}

rezaonline.net
یک شنبه 30 آذر 1393, 02:37 صبح
بله مشکلی نداره نمونه اش هم گذاشتید خودتون :)

css-man
یک شنبه 30 آذر 1393, 10:42 صبح
بله البته این کد یه لوپ بی نهایت ایجاد میکرد واسه همین کار نمی کرد من فکر میکردم شاید مشکل از نوع صدا کردن تابع باشه
مرسی

H:Shojaei
یک شنبه 30 آذر 1393, 11:25 صبح
احتمالا میدونید ولی بازم محض اطلاع کلی به این نوع توابع که خودشون تو خودشون صدا زده میشن میگن توابع بازگشتی...

rezakho
یک شنبه 30 آذر 1393, 16:42 عصر
توابع بازگشتی باید درون خودشون برای فراخوانی مجدد کنترلی داشته باشند تا توی infinity loop نیافته
مشکل شما اون قسمت if هست، باید شرطی داشته باشید که در نهایت به انتها برسه