عرض مشاركة واحدة
عضو نشيط
تاريخ التسجيل: Jun 2004-
#16 (permalink)  
تعريف دالة بداخل دالة

الدرس السابع : تعريف دالة بداخل دالة

المقصود بتعريف دالة داخل دالة هو أن تقوم بكتابة تعريف لدالة معينة وبداخل هذا التعريف تنشئ تعريف أخر لدالة أخرى ...

الآن افترض أنك تقوم بإستدعاء دالة بإسم myfunc وهذه الدالة ليس لها تعريف كالتالي :

كود PHP:
<?php
myfunc
();
?>
فإن المترجم سيصدر خطأ لعدم وجود تعريف للدالة ...

الآن لو قمنا بكتابة مايلي :


كود PHP:
<?php
function myfunc()
{
 
// do somthing...
}
?>
فالآن لو ك***ا ..


كود PHP:
<?php
myfunc
();
?>

فإن الأمور ستسير على مايرام والسبب أن مترجم php استطاع التعرف على الدالة من خلال التعريف الذي ذكرناه ..


الآن لاحظ مايلي :

كود PHP:
<?php
function foo() 
{
  function 
bar() 
  {
    echo 
"I don't exist until foo() is called.\n";
  }
}

?>
هذا مانقصد به تعريف دالة داخل دالة فلقد عرفنا دالة بإسم foo وعرفنا بداخلها دالة بإسم bar ..

ولكن هنا مشكلة للتوضيح ..

الآن مترجم php يعلم فقط بوجود الدالة foo فقط أي لو كتبت ما يلي :

كود PHP:
<?php
bar
();
?>
فإنه سيصدر خطأ يخبرك فيه أن الدالة bar غير معرفة !!!

إذا كيف أستخدم الدالة bar ؟

في حقيقة الآمر سيتم التعرف على الدالة bar في حال استدعيت الدالة foo فقط كالتالي :


كود PHP:
<?php
foo
();
?>
الآن عندما نفذ مترجم php هذه الدالة فإنه وجد بداخلها تعريف لدالة أخرى وعندها سيتعرف على الدالةbar التي بداخل foo ويجعلها متاحة للإستخدام...

أي بكلام أخر لا تستطيع إستدعاء الدالة التي بالداخل(bar) حتى تستدعي الدالة التي تحتويها (foo)(الدالة التي بالخارج) ..
فالآن لو عملنا التالي ..
كود PHP:
<?php
bar
();
?>
فإن الأمور ستسير على مايرام ...

وإليك المثال بالكامل ...

كود PHP:
<?php
function foo() 
{
  function 
bar() 
  {
    echo 
"I don't exist until foo() is called.\n";
  }
}

/* We can't call bar() yet
   since it doesn't exist. */

foo();

/* Now we can call bar(),
   foo()'s processesing has
   made it accessible. */

bar();

?>
وأرجوا أن تكون الفكرة قد اتضحت ...

نهاية الدرس السابع .. وانتظروا الدرس الثامن

وهذا مالدي الآن فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله عز وجل ...

اخوكم عبدالله عيد






__________________
قال صلى الله عليه وسلم (كلمتان خفيفتان على اللسان ثقيلتان في الميزان (سبحان الله وبحمده ** سبحان الله العظيم) اوكما قال صلى الله عليه وسلم . (فهل هذه الكلمتان ثقيلتان على لسانك كي لا تقولها مرة واحدة في اليوم على الأقل)
عبدالله عيد غير متواجد حالياً   قديم 20-07-2007, 02:18 PM
رد مع اقتباس