:g:4:
:sleep:
يمكنك التفكير فى الدوال او مايسمى بالـ functions, كانظام عمل او الية عمل.
يأخذ معطيات, ويعود لك بنتائج هذه المعطيات, او وظيفة, تستدعيها فتقوم بوظيفتها.
اول شئ سوف اعطى لمحة سريعة عن المعطيات قبل الخوض فى شرح الدوال نفسها.
عند كتابة الدالة المعطيات تسمى parameters
وعند استدعاء الدالة المعطيات تسمى arguments
هذا كان توضيح فقط لهذه المصطلحات وهما الأثنين شئ واحد (على الأقل على حسب خبرتى حتى الأن لم اجد اى فرق بين المصطلحين)
نعود للحديث عن الدوال.
هناك نوعين للدوال هناك الدوال الأساسية المبنية بالـ php
وتسمى built-in functions
وهناك الدوال التى تنشأها بنفسك وتسمى user-defined functions
اولا الدوال الأساسية (وهى كثيرة جدا)
مثل الدالة gettype() التى استخدمناها بدروس سابقة.
وهى تأخذ معطى واحد. عندما نمرر لها هذا المعطى, تعود لنا بنوع هذا المعطى.
هناك ايضا دالة مثل دالة abs وعملها ان تحول اى رقم الى قيمته الموجبة.
يعنى اذا مررت بها الرقم -1 مثلا, تعود لك بالقيمة 1
كامثال
كود رقم 1 فى ملف التيكستجرب المثال السابق بنفسك لتفهم الية عمل هذه الدالة.
والأمثلة على الدوال الأساسية لا حصر لها.
النوع الثانى من الدوال هى الدوال التى تنشأها انت وهى ماتسمى بالـ user-defined functions
ويتم انشاء الدوال بالشكل التالى كامثال بسيط
كود رقم 2 فى ملف التيكست
هكذا تم انشاء هذه الدالة. نكتب اول شئ كلمة function
ثم اسم الدالة, ثم () فى المثال السابق الأقواس فارغة لكن يمكن ان يتم وضع parameters بها وسوف نرى مزيد من الأمثلة فى هذا الدرس ان شاء الله.
بعد الأقواس نبدأ بقوس التقويم, ثم بداخله نضع الكود الخاص بالدالة, ثم نغلق القوس.
اذا كيف تستدعى هذه الدالة؟
كالتالى ببساطة.
كود رقم 3 فى ملف التيكست
لنأخذ مثال اخر لدالة تتطلب ادخال معطيات.
كود رقم 4 فى ملف التيكست
لن اقول لك كيف تستدعى هذه الدالة. اريدك ان تبذل قليل من الجهد وتستدعيها بنفسك. فقد اخبرتك مسبقا ان هذه الدالة تتطلب معطى.
بالنسبة لتفيذ الكود الذى بداخلها فهو ليس الا حلقة دوران for التى تم شرحها بالدرس السابق.
(كن حريصا ولا تجعل الرقم كبير جدا حتى لا يتسبب هذا فى احداث لاج بجهازك)
فى المثالين السابقين قمنا بإنشاء دوال تقوم بتنفيذ امر ما. لكن لا تعود بأى نتيجة.
لكن كيف نقوم بإنشاء دالة تعود لنا بناتج ما ولا تفعل اى شئ اخر؟
لنأخذ المثال التالى
كود رقم5 فى ملف التيكست
هذه الدالة عملها ان تقوم بعملية ضرب للمعطيات التى تدخلها لها. وتعود لك بنتاتج عملية الضرب.
والكلمة return هى التى تعود لك بالذى يعطى بعدها. وعندما تستدعى الكلمة return سيتوقف تنفيذ اى كود يأتى بعدها بالدالة, بالتالى كلمة return هى اخر شئ يتم كتابته بالدالة.
ويتم استدعائها بالشكل التالى على سبيل المثال
كود رقم 6 فى ملف التيكست;
لاحظ فى هذا المثال, اننا لم نستدعى الدالة فقط وهى قامت بطباعة النتيجة.
لكننا وضعناها بعد الأمر echo ليتم طباعة نتيجتها.
وبالطبع نحن استخدمنا فى المثال السابق عملية ضرب * يمكن ان نغيرها بعملية طرح او قسمة. او حتى نجعلها ناتج دالة اخرى.
مثلا
كود رقم 27 فى ملف التيكست
اظن الأمثلة بسيطة وتشرح نفسها.
ويمكنك ايضا انشاء دالة تكون كل معطياتها او بعض منها اختيارى وليس اجبارى. كالتالى مثلا.
كود رقم 8فى ملف التيكست
فى الدالة السابقة, يمكنك ان تمرر رقمين بالدالة, او فقط الرقم الأول.
اذا ادخلت الرقمين سوف تعود لك الدالة بنتيجة ضرب الرقمين ببعض,
اذا ادخلت الرقم الأول فقط, سوف تعود لك بنتيجة ضرب الرقم بـ 5.
هل يمكننى حفظ الدالة بمتغيير؟ نعم هذا ممكن. انظر المثال التالى
كود رقم 9 فى ملف التيكست
حديثنا لم ينتهى بعد عن الدوال. ونظرا لحرصى على الا اتسبب لك بأى ملل.
فسوف اكمل بقية هذا الدرس بالدرس التالى بإذن الله.
اضغ هنا لتحميل ملف التيكست
منقول للفائدة