دوال بي اتش بي PHP Functions

Ali Majrashiمنذ 8 سنوات

قوة PHP تأتي من الدوال Functions التي توفرها والتي تسهل عملك مع اي نوع من انواع البيانات حيث انها توفر أكثر من ١٠٠٠ دالة 

أنواع الدوال في PHP

لدينا ٣ انواع مهمة من الدوال في PHP

  1.  Built-in Functions وهي دوال من أساس اللغة وهي ماتوفرها لك PHP لتستخدمها مباشرة
  2. User Defined Functions وهي الدوال التي نقوم بإنشائها وإستخدامها في مشاريعنا البرمجية

  3. دوال المكتبات الإضافية مثل مكتبة GD للصور يتطلب تثبيتها وتفعيلها حتى نتمكن من إستخدامها 

ماهي User Defined Functions

وهي الدوال التي نقوم بتعريفها وإنشائها لنستخدمها عند كتابة أكواد PHP وهي مايهمنا هنا

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

عند تعريف أي دالة جديدة داخل ملف فإنه لن يتم تنفيذ محتواها مباشرة عند فتح الملف بالمتصفح

سوف يتم تنفيذ محتوى الدالة مباشرة عند إستدعاء الدالة فقط 

صيغة كتابة الدالة في PHP 

كتابة الدوال وتعريفها سهل جدا كل ماعليك هو تعريف الدالة بإستخدام الكلمة function ثم كتابة إسم الدالة وبعدها مباشرة نستخدم علامتي الأقواس () متبوعة بالأقواس المعقوفة {}  وداخل الأقواس المعقوفة {} نضع الأوامر البرمجية التي نرغب بتنفيذها عند إستدعاء الدالة

مثال مبسط لصيغة كتابة دالة بسيطة Basic Function Syntax


function functionName() {
    code to be executed;
}

ملاحظات عند تسمية الدوال

  • اسم الدالة يمكن ان يبدأ بحروف او علامة underscore فقط
  • اسم الدالة لايمكن ان يبدأ بأرقام أبدا
  • إذا كان لابد من وجود ارقام بمسمى الدالة يجب ان يكون اول الإسم حرف أو underscore ثم الرقم 
  • حاول قدر المستطاع ان يكون الإسم يعكس عمل الدالة
  • إبتعد عن المسميات الطويلة
  • مسميات الدوال غير حساسة عند الكتابة NOT case-sensitive 

دالة بسيطة

الآن سنقوم بتعريف أول دالة بسيطة عملها طباعة نص بالمتصفح عند زيارة الملف 

الكود الذي سنكتبه هو التالي


<?php

// define the function
function name() {
    echo "Hello ali!";
}

في هذا المثال عرفنا اول دالة لنا وأسميناها name وتقوم بطباعة رسالة للمتصفح عند زيارة الملف عن طريق localhost ولكن لن يتم تنفيذ محتوى الدالة حتى نقوم بإستدعاء الدالة وهي جدا بسيطة كل ماعليك هو استخدام اسم الدالة متبوعة بالأقواس () وسوف يتم تنفيذ محتوى الدالة مباشرة عند زيارة الملف من المتصفح بإستخدام السيرفر المحلي 

تكملة للمثال السابق قم بتعديل الكود للتالي


<?php

// define the function
function name() {
    echo "Hello ali!";
}

// call the function
name(); 

عند عرض الملف بالمتصفح فإن الناتج كالتالي

1.png

مدخلات الدوال Function Arguments

يمكن تمرير المعلومات للدالة عن طريق المدخلات Arguments وهذه المدخلات تشبه المتغيرات ويمكن تعريف أكثر من مدخل للدالة كل ماعليك داخل علامتي الأقواس كتابة أسماء المدخلات مفصولين عن بعض بعلامة الفاصلة 

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


<?php

// define the function with argument
function name($firstName) {
    echo "Hello $firstName! ";
}

// call the function and insert argument
name('ali'); 
name('abdullah'); 
name('moath'); 

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

عند عرض الملف بالمتصفح فإن الناتج كالتالي

2.png

وممكن أيضا تعريف أكثر من مدخل فلو أخذنا الكود السابق وأضفنا مدخل جديد بإسم age لطباعة عمر الشخص أيضا سيكون شكل الكود كالتالي


<?php

// define the function with 2 argument
function name($firstName, $age) {
    echo "Hello $firstName You are $age Year Old ";
}

// call the function and insert 2 argument
name('ali', 28); 
name('abdullah', 25); 
name('moath', 24); 

عند عرض الملف بالمتصفح فإن الناتج كالتالي

3.png

القيم الإفتراضية للمدخلات Default Argument Value

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


<?php

// define the function with 2 argument
function name($firstName, $age) {
    echo "Hello $firstName You are $age Year Old ";
}

// call the function and insert 2 argument
name('ali'); 
name('abdullah', 25); 
name('moath', 24);

عند عرض الملف بالمتصفح فإن الناتج كالتالي

4.png

ستلاحظ وجود خطأ يخبرك بأنك لم تقم بإدخال قيمة للمدخل الثاني عند إستدعاء الدالة name 

لحل هذه المشكلة نقوم بتعيين قيمة إفتراضية للمدخل age عند تعريف الدالة ليتم إستخدام هذه القيمة إفتراضيا عندما نستدعي الدالة ولاندخل قيمة للمدخل age سنقوم بتعديل المثال السابق ليصبح شكل الكود كالتالي


<?php

// define the function with 2 argument and assign default value for 2nd argument
function name($firstName, $age = 28) {
    echo "Hello $firstName You are $age Year Old ";
}

// call the function and insert 2 argument
name('ali'); 
name('abdullah', 25); 
name('moath', 24); 

عند عرض الملف بالمتصفح فإن الناتج كالتالي

5.png

إرجاع القيم Returning values

أحيانا عند العمل مع الدوال فأنت لاترغب ان تقوم الدالة بطباعة نص وإنما ان تعيد الدالة قيمة محددة يمكن ذلك بإستخدام return داخل الدالة بكل سهولة سنقوم بعمل دالة جديد تقوم بعملية حسابية على مدخلين ثم إرجاع قيمة الناتج بإستخدام return ثم بعد ذلك سنطبع الناتج للمتصفح


<?php

// define the function with 2 argument
function sum($x, $y) {
    $z = $x + $y;
    return $z;
}

// we print the results after we call the function and insert the arguments
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);

عند عرض الملف بالمتصفح فإن الناتج كالتالي

6.png

التعليقات (1)

fawazloca:

سلام عليكم اخوي اتمنى مساعدتك ... عندي واجب منزلي ومش عارف احله اللي هو 


الواجب العملي األول لبرمجة صفحات اإلنترنت احفظ ملف البرنامج باسم homework في برنامج المفكرة و استخدام لغة البرمجة php؟
............... التدريب 1 1 -انشاء دالة باسم "homework1"؟ 2 -وظيفة الدالة حساب معدل الطالب حسب ما يلي:  تعريف متغير لرقم الطالب باسم id واسناد قيمة له وتعريف متغير لالسم name واسناد قيمة له؟  تعريف متغير لمجموع النقاط التي حصل عليها الطالب باسم total_p واسناد قيمة ابتدائية له؟ 120 نقطة  تعريف متغير لعدد الساعات التي درسها الطالب باسم hour_t واسناد قيمة ابتدائية له؟ 30 ساعة  تعريف متغير للمعدل باسم GPA واسناد المعادلة التالية لحساب المعدل hour_t/total_p=GPA في حالة ان الساعات التي درسها الطالب أقل من 68 ساعة وإذا كانت غير ذلك يعمل على طباعة عبارة "الطالب أكمل جميع المقررات الدراسية"؟  طباعة رقم الطالب واالسم وعدد الساعات وعدد النقاط والمعدل في جدول؟ 3 -استدعاء الدالة للتنفيذ؟    ......................... التدريب 2 1 -انشاء دالة باسم "homework2"؟ 2 -تعريف متغير لرقم العملية باسم "num_op "واحتمال إمكانية أن يسند له احدى القيم التالية 1 أو 2 أو 3؟ 3 -استخدام جملة التحكم بسير البرنامج () IF للحاالت التالية:  إذا كان رقم العملية 1 يطبع األرقام من 10 الى 1 باستخدام حلقة التكرار () for؟  إذا كان رقم العملية 2 يطبع األرقام من 10 الى 1 باستخدام حلقة التكرار () while؟  إذا كان رقم العملية 2 يطبع األرقام من 10 الى 1 باستخدام حلقة التكرار () while-do؟  إذا لم يكن رقم العملية 1 أو2 أو3 يقوم بطباعة "القيمة غير معروفة حاول مرة أخرى"؟...........................  التدريب 3 1 -انشاء دالة باسم "homework3"؟ 2 -تعريف متغير لرقم العملية باسم "num_op "واحتمال إمكانية أن يسند له احدى القيم التالية 1 أو 2 أو 3؟ 3 -استخدام جملة التحكم بسير البرنامج () switch للحاالت التالية:  إذا كان رقم العملية 1 يطبع األرقام من 1 الى 10 باستخدام حلقة التكرار () for؟  إذا كان رقم العملية 2 يطبع األرقام من 1 الى 10 باستخدام حلقة التكرار () while؟  إذا كان رقم العملية 2 يطبع األرقام من 1 الى 10 باستخدام حلقة التكرار () while-do؟  إذا لم يكن رقم العملية 1 أو2 أو3 يقوم بطباعة "القيمة غير معروفة حاول مرة أخرى"؟

هذا التويتر تبعي لو عرفت اتمنى  تراسلني .. تويتر i9qi
سناب i-hro
 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !