الدرس الرايع : الدوال Functions







السلام عليكم ورحمة الله وبركاته
السادة أعضاء ترايدنت

تحيه طيبه اليكم

نستكمل سويا دروس دورة ترايدنت المفتوحة التى ابتدأناها سويا فى معهدنا الغالى ترايدنت والآن سنقدم الدرس الثالث بعنوان اتخاذ القرارات وحلقات التكرار وتتمثل محاور الحديث على :
  1. مقدمة عن الدوال .
  2. أنواع الدوال .
  3. الدوال المدمجه فى لغة php .
  4. الدوال التى يتم تعريفها من قبل المبرمج .
  5. كيف تقوم بكتابة داله وكيف تقوم باستدعاءها .
  6. المتغيرات (معاملات الازاحه) للدوال والقيم الافتراضيه للمعاملات .
  7. القيم الراجعه من الدوال (مخرجات الدوال).
الشرح
1- مقدمه عن الدوال :
ببساطه شديده يمكن توصيف الدوال بجهاز المحمول فأنت تعطى جهازك المحمول الطاقه متمثله فى الكهرباء لكى يعمل .
ويمكن توصيفها بالمطهى فانت تعطى المطهى الطعام والطاقه لكى يرجعه لك مطهيا .
كذلك الدوال فأنت تعطيها مجموعه من المتغيرات لتعود اليك بقيمه أخرى بعد اجراء مجموعه من العمليات بداخل الداله .
فاذا تحدثنا عن الدوال فاننا نضع قدميك على اولى الخطوات لكتابة كود ذو كفاءه عاليه .
تقوم الدوال بتوفير وقت وجهد كبيرين على المبرمج . فمثلا أنت تريد أنت تقوم بعمليه ما فى عدد كبير من الصفحات . فمن المفترض أنك ستكتب كود برمجى وتضعه فى كل صفحه من تلك الصفحات .
ولكن باستخدام الدوال فانك ستقوم بكتابة الكود مره واحده فقط ثم تقوم باستدعاء الداله لتنفيذ ما بداخلها من الكود .
ولنفترض أنك فى الحاله الاولى بدون استخدام الدوال وحدث أنك تريد ان تعدل على الكود الخاص بالعمليه ستكون عمليه مرهقه جدا للتعديل على كل الصفحات المتواجد بها الكود
ولكن باستخدام الدوال فانك ستعدل الكود مره واحده فقط .

2- أنواع الدوال :
فى تحدثنا عن الدوال من حيث التصنيف الرئيسى تنقسم الدوال الى :
  • دوال مدمجه فى لغة php : وهى دوال لا يحتاج المبرمج الى تعريفها أو كتابة الاكواد الخاصه بها ومن انواعها دوال التعامل مع النصوص والارقام والملفات .... الخ .
  • دوال تعرف من قبل المبرمج (المستخدم ): وهى دوال يقوم المبرمج بكتابتها لتنفيذ مهام معينه لا يمكن للدوال المدمجه تنفيذها ويتم استدعاؤها تقريبن بنفس الطريقه التى يتم بها استدعاء الدوال المدمجه.
3- الدوال المدمجه فى PHP :
كما تحدثنا فى السطور السابقه عن ذلك النوع من الدوال ولها أنواع كثيره جدا منها :
  • Strings Functions
  • XML Functions
  • URL Functions
  • Variable Functions
  • MYSQL Functions
  • Mail Functions
  • Math Functions
  • Images Functions
  • FTP Functions
  • Date and Time Functions
  • Arrays Functions
  • ..... الخ
يمكن الاطلاع على مرجع للدول المدمجه على الرابط التالى فيوجد به كثير من المعلومات الهامه عنها وتعليقات تزيد من خبراتك:
http://www.php.net/manual/en/funcref.php



وسنسرد طوال سير الدوره الدوال المدمجه التى يتم استخدامها .
4- الدوال التى يتم تعريفها من قبل المبرمج :
وهى دوال يقوم المبرمج بكتابتها لتنفيذ مهام معينه لا يمكن للدوال المدمجه تنفيذها ويتم استدعاؤها تقريبن بنفس الطريقه التى يتم بها استدعاء الدوال المدمجه وهى أولى الخطوات التى ستخطوها لكى تبدأ بكتابة كود ذو كفاءة عاليه. وتلك الدوال توفر على المستخدم مئات السطور ومئات العمليات من القص واللصق .
فكما ذكرنا سابقا المثال الذى قال :

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

تفيد الدوال المعرفه من قبل المبرمج فيما يلى :
  • توفير وقت وجهد كبيرين .
  • يمكن استدعاء الداله بمجرد كتابة سطر واحد وتنفيذها مئات المرات وبالتالى توفير مئات السطور البرمجيه بدلا من اعادة كتابة نفس الكود عند الحاجه لتنفيذه .
  • تسهل عليك عملية اصلاح الكود أو تعديله فى حالة حاجتك الى ذلك .
  • تجعل الكود منظم ومرتب وسهل التطوير والفهم .
فمثلا اذا اردنا أن نتأكد من اسم المستخدم وكلمة المرور فى البرنامج فسنتحتاج لكتابة عشرات الأكواد فى كل صفحه نريد التأكد منها من تلك القيم ولكننا يمكننا تكوين داله يرسل اليها اسم المستخدم وكلمة المرور لكى تتأكد منهما وتعيد لنا ما يفيد صحة أو خطأ تلك البيانات.

5- كيف تقوم بكتابة داله وكيف تقوم باستدعاءها :
لكى نقوم بكتابة داله معينه يجب أن نتبع عدة قواعد بسيطه وهى :
  • نبدأ بكلمة function
  • يتبع بعدها اسم الداله وهو اسم تختاره أنت .
  • ويتم وضع بين القوسين المتغيرات (المعاملات) التى يتم ارسالها للداله .
  • نقوم بكتابة الأوامر والعمليات الخاصه بالداله والتى ستنفذها .
  • نكتب كلمة ruturn وبعدها القيمه التى تعيدها الداله .
قد يكون ما تم ذكره سابقا لا يتضح اليك واليك الصيغه الخاصه بكتابة داله معرفه

رمز PHP:
function function_name Variable1){
نكتب هنا الأوامر والعمليات 
return variable2;

فكما يظهر فى السابق سنكتب مكان function_name اسم الداله .
وسنكتب مكان
Variable1 المتغيرات التى سيتم ارسالها للداله لكى تقوم بمهامها عليها .
وسنكتب مكان
نكتب هنا الأوامر والعمليات الأوامر التى ستقوم الداله بتنفيذها
وسنكتب مكان
variable2 القيمه التى ترجعها الداله بعد اجراء العمليات عليها .

واليك بمثال :
داله تقوم بحساب مجموع عددين يرسل اليها :
رمز PHP:
function plus($digit1,$digit2){
$total=$digit1+$digit2;
return 
$total;

ففى السطر الأول قمنا باخباره اننا سنكتب داله بالكلمة function
وقمنا بتسميتها plus
وبين القوسين المتغيرات التى سيستخدمها فى حساباته وهم $digit1 والمتغير $digit2
وفى السطر التالى قام بعمل العمليات الحسابيه على المتغيرين وخزن ما نتج به فى متغير يسمى $total
وبعد ذلك وضح أن القيمه التى ستعود هى قيمة المتغير $total لسبقه بكلمة return


الآن قمت بكتابة داله فكيف أقوم باستدعاؤها وتنفيذها فى برامجى ؟؟ والآن يأتى السؤال الذى يطرح نفسه :

نقوم بالاستدعاء بكتابة اسم الداله ثم ترسل لها قيم المتغيرات التى ستقوم بالعمليات عليها فقط
مثال لاستدعاء الداله السابقه :
رمز PHP:
echo plus(1,2); 
قمنا بكتابة اسم الداله وهو plus
وأرسلنا الى الداله المتغيران واحد واثنان كمتغيرات للداله ولاحظ أننا أرسلنا متغيران لأن الداله الأصليه يجب أن يرسل اليها متغيران فى الأساس .
الى حد هنا ستقوم الداله الأصليه بعمل العمليات الحسابيه على المتغيران وترجع الناتج
فقمنا باستخدام
echo لكى تقوم بطباعة ما نتج من تلك العمليه .

يفضل أن تقوم بكتابة دوال بيدك وتستدعيها بمختلف المهام


6-المتغيرات (معاملات الازاحه) للدوال والقيم الافتراضيه للمعاملات:
تحدثنا سابقا بالمثال السابق عن المتغيرات (معاملات الازاحه)
ولكن ما هي القيم الافتراضيه لها ؟؟؟
نفترض أنك قمت بكتابة داله مثل المتواجده بالأعلى لها معاملات ازاحه وعند استدعاءها قمت بارسال اليها متغير واحد فقط بدلا من ارسال المتغيران فسيظهر لك رسالة خطأ مشابهه لتلك :

Warning: Missing argument 2 for plus(), called in C:\AppServ\www\123.php on line 7 and defined in C:\AppServ\www\123.php on line 2
1



ولكى نفهم الموضوع تماما اليك تطبيق القيم الافتراضيه على المثال السابق . ولكى تجعل دالتك تعمل فى أى حاله من الحالات سواء ارسلت لها قيمه أم لم ترسل فتريد أن تحدد قيمه افتراضيه للمتغير تريد الداله أن تعمل فى حالة ارسال قيمته أو لم ترسل قيمته فهذا هو ما يسمى القيم الافتراضيه لمعاملات الدوال وهى أن تحدد قيمة افتراضيه للمتغيرات (معاملات الازاحه) لكى يجعلها كقيمه للمتغير فى حال لم ترسل اليها قيمته .

رمز PHP:
function plus($digit1=0,$digit2=0){
$total=$digit1+$digit2;
return 
$total;

فى هذا المثال قمنا بتحديد القيم الافتراضيه بصفر وبذلك اذا قمت بارسال قيمه للمتغير سيعتبرها قيمته أما اذا لم ترسل قيمه له فسيعتبر قيمته بالعدد صفر مباشرة .

وعن طريقة الاستدعاء فيمكنك أن تستدعى بأى طريقة من الطرق التاليه :

رمز PHP:
echo plus(1);
echo 
plus(1,2); 
ففى الطريقة الأولى لم نرسل اليه قيمه للمتغير الثانى ولهذا سيقوم باعتبارها بقيمة صفر تلقائيا .

7- القيم الراجعه من الدوال (مخرجات الدوال):
يمكن نظريا تقسيم القيم الراجعه من الدوال الى قسمين :
القسم الأول : باستخدام العباره return

وهو ما اشرنا اليه سابقا
القسم الثانى :
باستخدام العباره echo أو print

وعادة تستخدم هذا اذا كان المخرج هو كود html

الى هنا ينتهى بنا المطاف للدرس الرابع والى لقاء قريب بالدرس الخامس باذن الله
دروس سابقه :

الدرس بصيغة PDF:

MR.Electronic , Aymen123 ,

أرجو أن أكون قد قدمت لكم الدرس بشكل واضح ومفهوم
واذا كان هناك شئ يشوبه الغموض لا تتردد فى وضع استفسارك

تقبلوا تحياتى
Mr.Ajax
شكر الى