التعرف على باراميترات الدالة أثناء تنفيذ

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

والمقصود بالبارميترات هي المتغيرات التي تأتي بين قوسي الدالة عند تعريفها

ومثال على ذلك

Code:

<?php
function myData($a,$wyc,$xyz)
{
//do somthing here
}
?>



فكما تلاحظ فإن كلاً من a, wyc, xyz هي عبارة عن متغيرات عادية ولكن
كونها أتت بين قوسي الدالة أثناء تعريفها فيطلق عليها باراميترات أو
ارجيومينت ..

لو نظرنا إلى الدالة myData في الأعلى فإنه عند إستدعاء الدالة يجب أن
نعبئ الثلاث بارميترات الخاصة بالدالة أي يجب أن نكتب

Code:
<?php
myData(1,'welcome',true);
?>



ولكن إذا كتبت شيئاً مثل :

Code:
<?php
myData();
?>



وسنستثني هنا الباراميترات الإفتراضية ... فعندها سيصدر المترجم الخاص باللغة تحذيراً على كل متغير (باراميتر) للدالة لم يتم وضع قيمة له
وهنا لم يتم وضع قيم للثلاثة بارميترات وعندها سيصدر لك شئ مثل :

Code:
Warning: Missing argument 1 for myData() in c:wampwwwdemo.php on line 3
Warning: Missing argument 2 for myData() in c:wampwwwdemo.php on line 3
Warning: Missing argument 3 for myData() in c:wampwwwdemo.php on line 3


وإذا كتبت مثلاً

Code:
<?php
myData(1024);
?>



سيعطيك رسالتين تحذير لأنه بقي باراميترين ... وهكذا ..

درسنا هذا سيغطي موضوع التعرف على البارميترات واستخدامها ومعرفة عددها أثناء تنفيذ الدالة وإستدعائها وعندها نستطيع أن نعمل
دالة تستخدم عدد غير محدد من البارميترات دون أن نكتب أي باراميتر للدالة الأساسية أثناء تعريفها .. كيف ذلك ؟ تابع معنا


سنقوم بتعريف دالة بإسم mySwalif وهذه الدالة تستطيع أن تتعامل مع أي عدد من البارميترات دون تحديد مسبق ..

كيف ؟

هنالك الكثير من الدوال للتعامل مع الدوال وهنا سنتعامل مع دالتين مهمة وهي :

1- func_num_args
2- func_get_arg

سيأتي شرحها في الأسفل ..

الآن سنعرف دالة عادية mySwalif لطباعة كلمة swalif كالتالي :

Code:
<?php

function myTsmemy()
{
echo 'tsmemy';
}

?>


وعند الإستدعاء سنكتب

Code:
<?php
myTsmemy();
?>



عندها سيكون كل شئ على مايرام ...

ولكن لو .....


Code:
<?php
myTsmemy('anystring');
?>




فإن مترجم php سيصدر رسالة مفادها ان دالة mySwalif ليس لها بارميترات .. وهذا مانخشاه ..

إذا كيف سنحول دالة mySwalif إلى دالة تستطيع أن تقبل أي عدد من البارميترات التي يمررها المستخدم عند إستدعاء الدالة ؟

الجواب هو بإستخدام دالتي func_num_args و func_get_arg

و للتحذير فإن هذه الدالتين لا تستخدم إلا من داخل الدالة التي تعرفها أي لا تستطيع إستخدام الدالتين مباشرة ضمن الملف أي يجب أن تكتب
الدالتين داخل دالة أثناء تعريفها ...

بالنسبة للدالة func_num_args وظيفتها أنها تقوم بإرجاع عدد البارميترات التي مررها المستخدم للدالة
أما بالنسبة للدالة func_get_arg ووظيفتها هي احد البارميترات التي مررها المستخدم للدالة وذلك بتحديد رقم الباراميتر الذي تريده
وأول بارميتر يكون من الرقم 0 صفر .. وللتوضيح لاحظ المثال التالي الذي سيجعل دالة mySwalif تقبل أي عدد من البارميترات كالتالي :

Code:
<?php
function myTsmemy()
{
$num_args = func_num_args(); //هنا سترجع الدالة عدد البارميترات التي مررها المستخدم للدالة
for($i = 0; $i < $num_args; $i++)
{
$param = func_get_arg($i); //هنا ستحضر قيمة البارميتر الأول ومن ثم الثاني وهكذا
echo '<b>'.$param.'</b><br/>';
}
}
?>



الآن بإمكاني كتابة مايلي بدون مشاكل

Code:
<?php

myTsmemy();
mySwalif('welcome');
mySwalif('welcome','to');
myTsmemy('welcome','to','Tsmemy');
myTsmemy('welcome','to','tsmemy',2011);

?>



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


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




    

لا يمكنك اضافة تعليق

يجب عليك تسجيل الدخول لاضافة تعليقك




كلمات مفتاحية : التعرف على باراميترات الدالة أثناء تنفيذ


أضف الدرس الى موقعك