المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [دورة php - الدرس السابع عشر] - انشاء و برمجة الدوال functions



Sc®ipt
01-28-2011, 05:20 PM
بسم الله الرحمن الرحيم

http://upload.wikimedia.org/wikipedia/ar/thumb/8/85/%D8%B4%D8%B9%D8%A7%D8%B1_PHP.png/200px-%D8%B4%D8%B9%D8%A7%D8%B1_PHP.png

السلام عليكم و رحمة الله و بركاته ,, لقد درسنا في الدرس السابق موضوع مهم و هو موضوع اعادة استخدام الكود و دوال ادراج الملفات و تعرفنا على الطريقة و الأخطاء التي تنتج و بإمكانك الإطلاع على الدرس السابق و باقي دروس الدورة عبر الفهرس التالي :









[دورة php - الدرس الأول] - تحضير البرامج و كتابة اول برنامج (http://al79n.com/vb/showthread.php?t=60153)
[دورة php - الدرس الثاني] - المتغيرات و طريقة تعريفها و انواعها و التعامل معها (http://al79n.com/vb/showthread.php?t=60224)
[دورة php - الدرس الثالث] - الجزء الأول : الطباعة المدمجة و تنسيق الصفحات لعرضها (http://al79n.com/vb/showthread.php?t=60243)
[دورة php - الدرس الرابـع] - الجزء الثاني : طباعة المتغيرات في النصوص و بعض الدوال (http://al79n.com/vb/showthread.php?t=60264)
[دورة php - الدرس الخامس] - الثوابت و متغيرات النظام و دوال لا يستغني عنها اي مبرمج (http://al79n.com/vb/showthread.php?t=60306)
[دورة php - الدرس السادس] - الجزء الأول : النماذج و كيفية تصميمها و فوائدها (http://al79n.com/vb/showthread.php?t=60500)
[دورة php - الدرس السابع] - الجزء الثاني : معالجة بيانات النماذج و برمجتها (http://www.al79n.com/vb/showthread.php?t=60629)
[دورة php - الدرس الثامن] - الجزء الثالث : تطبيق عملي للنماذج - اتصل بن (http://www.al79n.com/vb/showthread.php?t=60739)
[دورة php - الدرس التاسع] - الجزء الأول : الجمل الشرطية : if وانواعها (http://www.al79n.com/vb/showthread.php?t=60763)
[دورة php - الدرس العاشر] - الجزء الثاني : الجمل الشرطية : جملة switch (http://www.al79n.com/vb/showthread.php?t=60792)
[دورة php - الدرس الحادي عشر] - الجزء الأول : جمل التكرار و الدوران : for + while (http://www.al79n.com/vb/showthread.php?t=60922)
[دورة php - الدرس الثاني عشر] - الجزء الثاني : تكملة جمل التكرار و تطبيقات عليها (http://www.al79n.com/vb/showthread.php?t=61245)
[دورة php - الدرس الثالث عشر] - الجزء الأول : المصفوفات الرقمية و تعريفها (http://www.al79n.com/vb/showthread.php?t=62112)
[دورة php - الدرس الرابع عشر] - الجزء الثاني : المصفوفات الحرفية و المركبة و تعريفها (http://www.al79n.com/vb/showthread.php?t=64223)
[دورة php - الدرس الخامس عشر] - الجزء الثالث : دوال المصفوفات (http://www.al79n.com/vb/showthread.php?t=64324)
[دورة php - الدرس السادس عشر] - اعادة استخدام الكود و ادراج الملفات (http://www.al79n.com/vb/showthread.php?t=64366)








و دراسة موضوع الدرس السابق ستقودنا الى موضوع مهم جدا في البرمجة و هو الدوال functions حيث سنتعرف على الدوال و كيفية انشائها و كيفية استخدامها و مناداتها و سنتعرف على مدخلات الدوال (المعاملات , الباراميترز) و سنتعرف ايضا على ارجاع الدوال و القيم التي تعود منها و لنبدأ على بركة الله ,,,

مناداة الدوال functions call


على مدار الدروس السابقة تطرقنا الى مجموعة من الدوال مثل ()settype و ()include و ()require و غيرها الكثير و قد رأينا اننا عندما نريد منادة دالة فإننا نكتب كالتالي مثلا :


<?php
function_name();
function_name(200);
function_name('zaed');
function_name($array);
function_name($var);
?>

و اعتقد ان طريقة مناداة الدوال اصبحت واضحة لكم

اخطاء في مناداة الدوال error in function call

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

http://img152.imageshack.us/img152/5896/47907811.jpg

و في هذه الحالة يجب التأكد ان اسم الدالة صحيح و يجب ايضا التأكد من ان اسم الدالة غير ممنوع من الإستخدام فمثلا لا يجوز تعريف دالة بإسم ()include لأنها موجودة اصلا في اساسيات لغة php

هنا يجب ان تعلم ايضا ان مناداة الدالة التي تقوم بإنشائها غير حساسة لحالة الأحرف فمثلا الدالة ()function_name هي نفسها ()Function_Name و هي نفسها ()FUNCTION_NAME و لكن عادة يقوم المبرمجين بإستخدام الحروف الصغيرة لتعريف و مناداة (استدعاء) الدوال و ايضا يجب ان تعلم ان الدوال لا يجوز ان تبدأ بأرقام او ان تكون معرفة مسبقا كما ذكرنا

لكن تذكر ان اسماء المتغيرات حساسة لحالة الأحرف فالمتغير var$ يختلف عن المتغير VAR$

انشاء و كتابة الدوال :

الآن سنقوم بتعلم انشاء الدوال و كتابتها و الصيغة العامة للدالة هي كالتالي :


<?php
function func_name()
{
// here code you want to do
}
?>

هنا تلاحظ اننا بدأنا بالكلمة function و هي كلمة محجوزة لتعريف دالة جديد ثم تبعها ()func_name و هذا هو اسم الدالة الذي تحدثنا عنه في السطور السابقة و ثم تبعها الأقواس {} و بينها نكتب الكود الذي نريد تنفيذه عند استدعاء الدالة و اذا اردنا استدعاء الدالة فإننا نكتب اسم الدالة بعد الدالة كالتالي :


<?php
function func_name()
{
// here code you want to do
}

func_name(); // call
?>

و الآن اليك المثال التالي لطباعة جملة معينة بإستخدام الدوال :


<?php
function print_welcome_statment()
{
echo "<center><b><h1>Welcome to php functions with zaedo :D</h1></b></center>";
}

print_welcome_statment();
?>

لاحظ هنا في السطر اننا قمنا بإستدعاء دالة و عند استدعائها سيذهب المترجم للبحث عن جسم الدالة و تنفيذه اي انه هنا سيطبع الجملة :

Welcome to php functions with zaedo

و بإمكانك مشاهدة الناتج عبر الرابط التالي :
http://www.al79n-php.info/less17/fun1.php

مدخلات الدوال :

عبر دراستنا للمواضيع السابقة في الدورة مر معنا دوال تحتاج الى مدخلات لتعمل بصورة صحيحة فمثلا الدالة ()require تحتاج الى مدخل وهو مسار الملف المراد ادراجه و إلا سينتج لنا خطأ ,, و هنا عند انشاء الدوال نستطيع ان نصنع دوال تأخذ مدخلات و الصيغة العامة لها كالتالي :


<?php
function func_name($var)
{
// here code you want to do
}
?>

حيث ان هذه الدالة كما تلاحظ تحتاج الى مدخل لإجراء عمليات عليه و الآن لاحظ المثال التالي و طريقة الإستدعاء :

<?php
function print_variable($var)
{
echo $var ."<br/>";
}

print_variable(10);
print_variable("zaed");

$x=15;
print_variable($x);
?>

كما تلاحظ انه تم تمرير الرقم 10 الى الدالة في الإستدعاء فيقوم المترجم بأخذ القيمة 10 و طباعتها حسب تنفيذ الدالة و في الإستدعاء الثاني تم تمرير نص للدالة حيث سيستقبلها جسم الدالة و يقوم بطباعتها و ايضا في الإستدعاء الثالث تم تمرير متغير يحمل قيمة 15 و سيستقبله جسم الدالة و يقوم بطباعته و بإمكانك مشاهدة الناتج عبر الرابط التالي :
http://www.al79n-php.info/less17/fun2.php (http://www.al79n-php.info/less17/fun2.php)

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


<?php
function sum($var1 , $var2 , $var3)
{
$s = $var1 + $var2 + $var3;
echo "Sum is : ".$s."<br/>";
}

sum(10 , 20 , 15);

$x=3;
$y=6;
$z=4;
sum($x , $y , $z);
?>

لاحظ هنا في هذا المثال اننا فصلنا بين مدخلات الدالة بالفاصلة (,) في جسم الدالة و في استدعاء الدالة
و ايضا عليك ان تلاحظ ان عدد المدخلات في جسم الدالة يجب ان يكون مساويا لعدد المدخلات في الإستدعاء لهذه الدالة و بإمكانك مشاهدة نتيجة تنفيذ هذا الكود عبر الرابط التالي :
http://www.al79n-php.info/less17/fun3.php (http://www.al79n-php.info/less17/fun3.php)

والآن لاحظ المثال التالي :


<?php
function sum($var1 , $var2 , $var3=0)
{
$s = $var1 + $var2 + $var3;
echo "Sum is : ".$s."<br/>";
}

sum(10 , 20);

$x=3;
$y=6;
sum($x , $y);
?>


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

http://www.al79n-php.info/less17/fun4.php (http://www.al79n-php.info/less17/fun4.php)

الآن لاحظ اننا نستطيع استخدام جمل الشرط و الدوران في الدوال من خلال المثال التالي :


<?php
function compar($var1 , $var2)
{
if($var1 == $var2)
{
echo "$var1 is equal $var2";
}
elseif($var1 > $var2)
{
echo "$var1 greater than $var2";
}
else
{
echo "$var1 less than $var2";
}
}

// call by 1 and 2
compar(1,2);

echo "<br/>";

// call by 100 and 85
$x = 100;
$y = 85;
compar($x,$y);
?>

و بإمكانك مشاهدة الناتج من هنا :
http://www.al79n-php.info/less17/comp.php (http://www.al79n-php.info/less17/comp.php)

مخرجات الدوال و القيم الراجعة :

يوجد نوعين من القيم التي تخرج كنتيجة للدالة و هي ارجاع مخرجات من الدالة بإستخدام جملة طباعة او كود html و النوع الثاني و هو قيمة نرجعها لمكان الإستدعاء و النوع الأول يسمى void و الثاني returned

عندما لا تريد ارجاع قيمة من الدالة فإننا نقوم بالطباعة من داخل الدالة مثل المثال السابق

اما اذا اردنا ارجاع قيمة للدالة فإننا نستخدم الجملة return لاحظ معي هذا المثال و من ثم الشرح :


<?php
function sum($v1 , $v2)
{
$s = $v1 + $v2;
return $s;
}

$result = sum(5 , 3);
echo $result."<br/>";

echo sum(3,6) ."<br/>";
?>

هنا قمنا بتعريف دالة اسمها sum و تأخذ مدخلين و من ثم تقوم بجمع المدخلين و تخزين الناتج في s$ ثم تعيد قيمة الناتج المخزن في s$ الى مكان الإستدعاء بإستخدام الجملة return
لاحظ في الإستدعاء الأول اننا قمنا بتعريف متغير اسمه result$ لتخزين القيمة العائدة من الدالة و لم نكتب اسم الدالة مباشرة و بعد استقبال القيمة العائدة الى المتغير قمنا بطباعتها و في الإستدعاء الثاني قمنا بإستدعاء الدالة داخل جملة الطباعة لتعود القيمة الراجعة من الدالة الى مكان الإستدعاء داخل جملة الطباعة و ليس لوحدها كما في السابق
و بإمكانكم مشاهدة نتائج تنفيذ هذا الكود عبر الرابط التالي :
http://www.al79n-php.info/less17/ret.php (http://www.al79n-php.info/less17/ret.php)


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

اخوكم : زيد مراد

totoalharbi
01-28-2011, 05:36 PM
يسلمووووووووووووو

Sc®ipt
01-28-2011, 06:45 PM
يسلمووووووووووووو

العفو......... :)

DANA MURAD
01-28-2011, 06:58 PM
شرح ممتاز وموفق جدا..، وبرضو مفهوم
:bl (14): :bl (14): :bl (14): :bl (14): :bl (14):

Sc®ipt
01-28-2011, 08:22 PM
شرح ممتاز وموفق جدا..، وبرضو مفهوم
:bl (14): :bl (14): :bl (14): :bl (14): :bl (14):

منورة دانا :) .....