الدوال :
تُوفر php عددا كبيرا من الدوال يتجاوز عددها الالف دالة , ناهيك عن العدد الضخم من المكتبات الاخرى التي تقوم بعدد لا باس به من العمليات , لكن بشكل أو باخر ستحتاج الى دالة جديدة تقوم بمهمة معينة لبرنامجك .
الشكل العام لتعريف الدالة هو :
function functionName(/*وسائط الدالة*/){ /* جسم الدالة */}
- وسائط الدالة
يمكنها أن تقبل أي نوع من البيانات , وكذلك يمكنها اعادة بأي نوع من البيانات أو عدم الرجوع بأي قيمة , الدالة التالية دالة لا تأخذ أي وسائط ولا تُعيد أي قيمة فقط تطبع جملة على المتصفح , ولتشغيل هذه الدالة علينا استدعائها بكتابة اسمها و من ثم قوسين () كما يلي :
<?phpfunction f_echo(){ echo "<h1>Arab TEAM 2000</h1>";}f_echo();?>
أما الدالة التالية فهي تأخذ وسيطا لتقوم بطباعته ضمن وسمي h1 , لاحظ ان المتغير $in هو متغير محلي مُعرف داخل الدالة فقط ولا علاقة له مع المتغير $in خارج الدالة :
<?php$in = 'Abd Alltif';function f_echo($in){ echo "<h1>$in</h1>";}f_echo(10);f_echo(12.332);f_echo('Ahmed');f_echo(true);//f_echo(array(10,20,30));?>
والكود الأخير الموجود في التعليق هو محاولة تمرير مصفوفة لطباعتها , لكن لو نفذت هذا السطر سيتم توليد خطأ , لأن الدالة تحتوي على بيانات داخلها ولا نستطيع طباعتها مباشرة .
الدالة التالية تأخذ وسيطين وتُعيد حاصل الجمع :
<?phpfunction sum($var1, $var2){ return $var1 + $var2;}echo sum(10, 20);?>
كما يمكن تمرير الدوال لبعضها البعض كالتالي :
<?phpf_echo(sum(10,20));function f_echo($in){ echo "<h1>$in</h1>";}function sum($var1,$var2){ return $var1+$var2;}?>
القيم الافتراضية للوسائط :
في بعض الاحيان يكون للدوال وسائط اختيارية حيث يتم وضع قيمة افتراضية لها , فإذا لم يتم تحديد قيمة الوسيط , فسيتم اخذ القيمة الافتراضية بدلا عنه , ويجب ان تكون جميع الوسائط بعد الوسيط الافتراضي افتراضية , اي لا يجوز ان تعريف الدالة بالشكل التالي :
<?phpfunction function_name ($var1 = 'value', $var2){ }?>
مثال عن الاستخدام الصحيح :
<?phpfunction f_echo($in = "text"){ echo "<h1>$in</h1>";}f_echo();?>
سيتم طباعة text بسبب عدم اعطاء اي وسائط للدالة .
اعادة اكثر من قيمة من الدالة :
كما تلاحظ لا يجوز ان تعيد الدالة الواحدة اكثر من قيمة , لكن يمكن تجاوز هذه المشكلة باستخدام المصفوفات حيث يتم اعادة مصفوفة تكون عناصرها هي القيم المطلوبة :
<?phpfunction math($x){ return array($x * $x, log($x));}print_r(math(23));?>
تمرير الوسائط بمرجعياتها :
في بعض الاحيان , نحتاج الى تعديل قيمة الوسيط مباشرة في الدالة عوضا عن ارجاع قيمة منها واسنادها الى متغير , لجعل الوسائط تُمرر الى دالة بمرجعيتها (By Reference) يجب استخدام الرمز & قبل اسم الوسيط عند تعريف الدالة :
<?phpfunction sum(&$var1, $var2){ $value1 = $var1 + $var2; //the same as $var1+= $var2;}$num1 = 10;$num2 = 15;echo $num1;//outputs 10echo '<br>';sum($num1, $num2);echo $num1;//outputs 25?>
تُوفر php عددا كبيرا من الدوال يتجاوز عددها الالف دالة , ناهيك عن العدد الضخم من المكتبات الاخرى التي تقوم بعدد لا باس به من العمليات , لكن بشكل أو باخر ستحتاج الى دالة جديدة تقوم بمهمة معينة لبرنامجك .
الشكل العام لتعريف الدالة هو :
function functionName(/*وسائط الدالة*/){ /* جسم الدالة */}
- وسائط الدالة
يمكنها أن تقبل أي نوع من البيانات , وكذلك يمكنها اعادة بأي نوع من البيانات أو عدم الرجوع بأي قيمة , الدالة التالية دالة لا تأخذ أي وسائط ولا تُعيد أي قيمة فقط تطبع جملة على المتصفح , ولتشغيل هذه الدالة علينا استدعائها بكتابة اسمها و من ثم قوسين () كما يلي :
<?phpfunction f_echo(){ echo "<h1>Arab TEAM 2000</h1>";}f_echo();?>
أما الدالة التالية فهي تأخذ وسيطا لتقوم بطباعته ضمن وسمي h1 , لاحظ ان المتغير $in هو متغير محلي مُعرف داخل الدالة فقط ولا علاقة له مع المتغير $in خارج الدالة :
<?php$in = 'Abd Alltif';function f_echo($in){ echo "<h1>$in</h1>";}f_echo(10);f_echo(12.332);f_echo('Ahmed');f_echo(true);//f_echo(array(10,20,30));?>
والكود الأخير الموجود في التعليق هو محاولة تمرير مصفوفة لطباعتها , لكن لو نفذت هذا السطر سيتم توليد خطأ , لأن الدالة تحتوي على بيانات داخلها ولا نستطيع طباعتها مباشرة .
الدالة التالية تأخذ وسيطين وتُعيد حاصل الجمع :
<?phpfunction sum($var1, $var2){ return $var1 + $var2;}echo sum(10, 20);?>
كما يمكن تمرير الدوال لبعضها البعض كالتالي :
<?phpf_echo(sum(10,20));function f_echo($in){ echo "<h1>$in</h1>";}function sum($var1,$var2){ return $var1+$var2;}?>
القيم الافتراضية للوسائط :
في بعض الاحيان يكون للدوال وسائط اختيارية حيث يتم وضع قيمة افتراضية لها , فإذا لم يتم تحديد قيمة الوسيط , فسيتم اخذ القيمة الافتراضية بدلا عنه , ويجب ان تكون جميع الوسائط بعد الوسيط الافتراضي افتراضية , اي لا يجوز ان تعريف الدالة بالشكل التالي :
<?phpfunction function_name ($var1 = 'value', $var2){ }?>
مثال عن الاستخدام الصحيح :
<?phpfunction f_echo($in = "text"){ echo "<h1>$in</h1>";}f_echo();?>
سيتم طباعة text بسبب عدم اعطاء اي وسائط للدالة .
اعادة اكثر من قيمة من الدالة :
كما تلاحظ لا يجوز ان تعيد الدالة الواحدة اكثر من قيمة , لكن يمكن تجاوز هذه المشكلة باستخدام المصفوفات حيث يتم اعادة مصفوفة تكون عناصرها هي القيم المطلوبة :
<?phpfunction math($x){ return array($x * $x, log($x));}print_r(math(23));?>
تمرير الوسائط بمرجعياتها :
في بعض الاحيان , نحتاج الى تعديل قيمة الوسيط مباشرة في الدالة عوضا عن ارجاع قيمة منها واسنادها الى متغير , لجعل الوسائط تُمرر الى دالة بمرجعيتها (By Reference) يجب استخدام الرمز & قبل اسم الوسيط عند تعريف الدالة :
<?phpfunction sum(&$var1, $var2){ $value1 = $var1 + $var2; //the same as $var1+= $var2;}$num1 = 10;$num2 = 15;echo $num1;//outputs 10echo '<br>';sum($num1, $num2);echo $num1;//outputs 25?>