من المعروف أنه عند تعريفك لدالة معينة فإنك ربما تستخدم عدد معين
من الباراميترات مع الدالة أو ربما لا تستخدم أي باراميتر أي أن الدالة
لا تحتوي على باراميترات ... والمقصود بالبارميترات هي المتغيرات التي تأتي بين قوسي الدالة عند تعريفها ومثال على ذلك
فكما تلاحظ فإن كلاً من a, wyc, xyz هي عبارة عن متغيرات عادية ولكن
كونها أتت بين قوسي الدالة أثناء تعريفها فيطلق عليها باراميترات أو
ارجيومينت .. لو نظرنا إلى الدالة myData في الأعلى فإنه عند إستدعاء الدالة يجب أن
نعبئ الثلاث بارميترات الخاصة بالدالة أي يجب أن نكتب
ولكن إذا كتبت شيئاً مثل :
وسنستثني هنا الباراميترات الإفتراضية ... فعندها سيصدر المترجم الخاص باللغة تحذيراً على كل متغير (باراميتر) للدالة لم يتم وضع قيمة له
وهنا لم يتم وضع قيم للثلاثة بارميترات وعندها سيصدر لك شئ مثل :
دالة تستخدم عدد غير محدد من البارميترات دون أن نكتب أي باراميتر للدالة الأساسية أثناء تعريفها .. كيف ذلك ؟ تابع معنا
سنقوم بتعريف دالة بإسم mySwalif وهذه الدالة تستطيع أن تتعامل مع أي عدد من البارميترات دون تحديد مسبق .. كيف ؟ هنالك الكثير من الدوال للتعامل مع الدوال وهنا سنتعامل مع دالتين مهمة وهي : 1- func_num_args
2- func_get_arg سيأتي شرحها في الأسفل .. الآن سنعرف دالة عادية mySwalif لطباعة كلمة swalif كالتالي :
عندها سيكون كل شئ على مايرام ... ولكن لو .....
فإن مترجم php سيصدر رسالة مفادها ان دالة mySwalif ليس لها بارميترات .. وهذا مانخشاه .. إذا كيف سنحول دالة mySwalif إلى دالة تستطيع أن تقبل أي عدد من البارميترات التي يمررها المستخدم عند إستدعاء الدالة ؟ الجواب هو بإستخدام دالتي func_num_args و func_get_arg و للتحذير فإن هذه الدالتين لا تستخدم إلا من داخل الدالة التي تعرفها أي لا تستطيع إستخدام الدالتين مباشرة ضمن الملف أي يجب أن تكتب
الدالتين داخل دالة أثناء تعريفها ... بالنسبة للدالة func_num_args وظيفتها أنها تقوم بإرجاع عدد البارميترات التي مررها المستخدم للدالة
أما بالنسبة للدالة func_get_arg ووظيفتها هي احد البارميترات التي مررها المستخدم للدالة وذلك بتحديد رقم الباراميتر الذي تريده
وأول بارميتر يكون من الرقم 0 صفر .. وللتوضيح لاحظ المثال التالي الذي سيجعل دالة mySwalif تقبل أي عدد من البارميترات كالتالي :
الآن بإمكاني كتابة مايلي بدون مشاكل
وأرجوا أن تكون الفكرة قد اتضحت ...
وهذا مالدي الآن فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله عز وجل ... الكاتب عبدالله عيد
من الباراميترات مع الدالة أو ربما لا تستخدم أي باراميتر أي أن الدالة
لا تحتوي على باراميترات ... والمقصود بالبارميترات هي المتغيرات التي تأتي بين قوسي الدالة عند تعريفها ومثال على ذلك
<?php
function myData($a,$wyc,$xyz)
{
//do somthing here
}
?>
function myData($a,$wyc,$xyz)
{
//do somthing here
}
?>
فكما تلاحظ فإن كلاً من a, wyc, xyz هي عبارة عن متغيرات عادية ولكن
كونها أتت بين قوسي الدالة أثناء تعريفها فيطلق عليها باراميترات أو
ارجيومينت .. لو نظرنا إلى الدالة myData في الأعلى فإنه عند إستدعاء الدالة يجب أن
نعبئ الثلاث بارميترات الخاصة بالدالة أي يجب أن نكتب
<?php
myData(1,'welcome',true);
?>
myData(1,'welcome',true);
?>
ولكن إذا كتبت شيئاً مثل :
<?php
myData();
?>
myData();
?>
وسنستثني هنا الباراميترات الإفتراضية ... فعندها سيصدر المترجم الخاص باللغة تحذيراً على كل متغير (باراميتر) للدالة لم يتم وضع قيمة له
وهنا لم يتم وضع قيم للثلاثة بارميترات وعندها سيصدر لك شئ مثل :
Warning: Missing argument 1 for myData() in c:\wamp\www\demo.php on line 3
Warning: Missing argument 2 for myData() in c:\wamp\www\demo.php on line 3
Warning: Missing argument 3 for myData() in c:\wamp\www\demo.php on line 3
وإذا كتبت مثلاً
Warning: Missing argument 2 for myData() in c:\wamp\www\demo.php on line 3
Warning: Missing argument 3 for myData() in c:\wamp\www\demo.php on line 3
<?php
myData(1024);
?>
سيعطيك رسالتين تحذير لأنه بقي باراميترين ... وهكذا ..
درسنا هذا سيغطي موضوع التعرف على البارميترات واستخدامها ومعرفة عددها أثناء تنفيذ الدالة وإستدعائها وعندها نستطيع أن نعملmyData(1024);
?>
دالة تستخدم عدد غير محدد من البارميترات دون أن نكتب أي باراميتر للدالة الأساسية أثناء تعريفها .. كيف ذلك ؟ تابع معنا
سنقوم بتعريف دالة بإسم mySwalif وهذه الدالة تستطيع أن تتعامل مع أي عدد من البارميترات دون تحديد مسبق .. كيف ؟ هنالك الكثير من الدوال للتعامل مع الدوال وهنا سنتعامل مع دالتين مهمة وهي : 1- func_num_args
2- func_get_arg سيأتي شرحها في الأسفل .. الآن سنعرف دالة عادية mySwalif لطباعة كلمة swalif كالتالي :
<?php
function mySwalif()
{
echo 'swalif';
}
?>
وعند الإستدعاء سنكتب
{
echo 'swalif';
}
?>
<?php
mySwalif();
?>
mySwalif();
?>
عندها سيكون كل شئ على مايرام ... ولكن لو .....
<?php
mySwalif('anystring');
?>
mySwalif('anystring');
?>
فإن مترجم php سيصدر رسالة مفادها ان دالة mySwalif ليس لها بارميترات .. وهذا مانخشاه .. إذا كيف سنحول دالة mySwalif إلى دالة تستطيع أن تقبل أي عدد من البارميترات التي يمررها المستخدم عند إستدعاء الدالة ؟ الجواب هو بإستخدام دالتي func_num_args و func_get_arg و للتحذير فإن هذه الدالتين لا تستخدم إلا من داخل الدالة التي تعرفها أي لا تستطيع إستخدام الدالتين مباشرة ضمن الملف أي يجب أن تكتب
الدالتين داخل دالة أثناء تعريفها ... بالنسبة للدالة func_num_args وظيفتها أنها تقوم بإرجاع عدد البارميترات التي مررها المستخدم للدالة
أما بالنسبة للدالة func_get_arg ووظيفتها هي احد البارميترات التي مررها المستخدم للدالة وذلك بتحديد رقم الباراميتر الذي تريده
وأول بارميتر يكون من الرقم 0 صفر .. وللتوضيح لاحظ المثال التالي الذي سيجعل دالة mySwalif تقبل أي عدد من البارميترات كالتالي :
<?php
function mySwalif()
{
$num_args = func_num_args(); //هنا سترجع الدالة عدد البارميترات التي مررها المستخدم للدالة
for($i = 0; $i < $num_args; $i++)
{
$param = func_get_arg($i); //هنا ستحضر قيمة البارميتر الأول ومن ثم الثاني وهكذا
echo '<b>'.$param.'</b><br/>';
}
}
?>
function mySwalif()
{
$num_args = func_num_args(); //هنا سترجع الدالة عدد البارميترات التي مررها المستخدم للدالة
for($i = 0; $i < $num_args; $i++)
{
$param = func_get_arg($i); //هنا ستحضر قيمة البارميتر الأول ومن ثم الثاني وهكذا
echo '<b>'.$param.'</b><br/>';
}
}
?>
الآن بإمكاني كتابة مايلي بدون مشاكل
<?php
mySwalif();
mySwalif('welcome');
mySwalif('welcome','to');
mySwalif('welcome','to','swalif');
mySwalif('welcome','to','swalif',2007); ?>
mySwalif();
mySwalif('welcome');
mySwalif('welcome','to');
mySwalif('welcome','to','swalif');
mySwalif('welcome','to','swalif',2007); ?>
وأرجوا أن تكون الفكرة قد اتضحت ...
وهذا مالدي الآن فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله عز وجل ... الكاتب عبدالله عيد