ترتيب الكود البرمجي
تعلمنا في الدروس السابقة أساسيات من أساسيات البرمجة واعطينا مثال عن الروتين في الحياة اليومية وهو أن تقوم بعمل شي أكثر من مرة في الحياة اليومية مثل شرب الشاي أو شرب القهوة وغير ذلك ، درسنا اليوم يتكلم عن ترتيب الكود ويتكلم تقريباً عن نفس فكره الروتين اليومي فأنت في حياتك تكرر بعض الأعمال بشكل روتيني
وقد تكون مللت الروتين فأحضرت شي يساعدك على التخفيف من هذا الروتين ... فمثلاً عند استخدامك لبرنامج MS Word قد تكون مللت من تنسيق عدة نصوص بطريقة معينة فأنت عند ذلك تقوم بصناعة ماكرو يقوم بفعل العمل الذي كنت تفعله في عدة خطوات بخطوة واحد فقط !!
ولنقل أنك في حياتك اليومية وفي يوم إجازة وقررت أن تقوم بعمل تنظيف شامل (يا إلهي عليك غسيل أطباق الصحون وتنظيف الأثاث وتنظيف الأرضيه وترتيب المكتبة وترتيب غرفة النوم و ... و ... الخ ) عند ذلك فإنك تبحث عن طريقة عملية لكي يتم انجاز هذه المهمة في أسرع وقت فتقوم بتقسيم هذه المهمة الكبيرة على عده أقسام (التنظيف ،الترتيب ، الغسيل ،.....) ثم تقوم باستدعاء أطفالك وفلذات اكبادك وتقسم على كل واخد منهم مهمة بسيطة يستطيع القيام بها .. هذا التقسيم يسمي في عالم البرمجة بالـfunction (دالة أو وظيفة )
Function
الدالة هي جزء من كود البرنامج يتم تعريفه عن طريق المبرمج ليتم تنفيذ شي معين بواسطتها ، تقوم الدالة بأخذ قيم وتسمي (arguments معطيات ) كمدخلات ،، ثم تقوم بعمل بعض التعديلات على هذه المدخلات وتقوم بإخراج قيمة أخري في أكثر الأحيان تقوم الدالة بأخذ القيم ووضعها في متغيرات أخري تسمي بالـ(parameters) لكي يتم اجراء العمليات عليها داخل الدالة وهذه المتغيرات لاتعمل خارج الدالة أي أنها متغيرات خاصه بالدالة فقط ! ...في دروسنا السابقه قمنا باستخدام دوال عديده مثل دوال فرز المصفوفات ودوال ايجاد نوع البيانات ،،،، هذه المرة سنقوم ببناء دوالنا الخاصة بنا ،، ومن صنعنا نقوم باعطاءها المعلومات والبيانات وهي تقوم باجراء العمليات عليها ومن ثم اخراج الحلول ...
تعريف واستدعاء الدوال
لكي تقوم بتعريف دالة فإنك تقوم بكتابة الكلمة function متبوعة باسم الدالة والبارمترات الازمة والتي سيتم اجراء العمليات عليها بين قوسين ومن ثم تقوم بكتابة الكود الازم وسط { و }
الصيغه :
Function functionname (parameters)
{
function code
}
تقوم بكتابه اسم الدالة بدلاً من functionname ثم تقوم بتعريف المتحولات أو المتغيرات parameters ومن ثم تقوم بكتابه الكود الذي سوف يقوم بالمطلوب بين القوسين بدلاً من function code
دعنا الآن نقوم بكتابة دالة من إنشاءنا والتي تقوم باجراء عملية الجمع على متغيرين وسنقوم بتسمية الدالة باسم sumnoraml وهو اسم من تأليفنا ويدل على وظيفة وهدف الدالة ويمكن أن تقوم بتمسية الدالة باي اسم تريده ولست مجيراً بكتابه اسم معين
<?
Function sumnormal($a)
{
$a = $a + 100 ;
return $a;
}
?>
نقوم في هذه الدالة بإجراء عملية إضافة 100 على المتغير أو القيمة التي يتم تمريرها .
Return
يجب أن نضعها في نهاية كل دالة ، نستخدم هذه الكلمة لكي نقوم بإعلام الداله ان وظيفتها انتهت وايضا نستخدمها إذا كان لدينا أكثر من قيمة ونريد أن نقوم بإخبار الـPHP ماهي القيمة التي سيتم اعتمادها ففي مثالنا هذا أردنا إخبار الـPHP بأن يقوم بأخذ المتغير $a بانه هو القيمة النهائية مع أنه لو لم نضع المتغير فسيتم اعتباره هو الناتج النهائي لانه لايوجد متغير اخر تم عليه أي عمليات
الذي اقصده أننا لو كتبنا الكود بالشكل التالى :
<?
Function sumnormal($a)
{
$a = $a + 100 ;
return ;
}
?>
فإنه لاضرر من ذلك لأنه لا يوجد لدينا إلا قيمة واحدة لن يتم اعتماد قيمة غيرها ولكن لو افترضنا أنه لدينا أكثر من قيمة كما في المثال التالى :
<?
Function sul($a,$b)
{
$a = $a + 100 ;
$b= $b*100;
return $a ;
}
?>
هنا يجب تحديد أي المتغيرين سيكون هو القيمة النهائيه للدالة .
شرح الداله (sumnormal)
تقوم الدالة التي صنعناها بأخذ قيمتين ومن ثم فإنها تقوم بزياده العدد الذي يتم تمريره 100
ولكي نقوم بإخراج نتيجة الدالة فإننا ببساطة نسطيع ذلك باجراء أحد الأمرين echo أو print .
مثال :
<?
Function sumnormal($a)
{
$a = $a + 100 ;
return ;
}
echo sumnormal(500);
?>
لقد قمنا بتمرير رقم بدلاً من المتغير ويمكننا أيضا تمرير متغير بدلاً من الرقم
مثال :
<?
Function sumnormal($a)
{
$a = $a + 100 ;
return ;
}
$f=100;
echo sumnormal($f);
?>
لاحظ أننا استخدمنا متغير في الدالة (مما يثبت كلامنا في الأعلى أن للدالة متغيرات خاصة بها) وليس معني ذلك أننا لانستطيع استخدام متغيرات بنفس الاسم المذكور في الدالة فيمكننا مثلاً كتابة نفس اسم المتغير بدون حصول أي مشاكل كالتالى :
<?
Function sumnormal($a)
{
$a = $a + 100 ;
return ;
}
$a=100;
echo sumnormal($a);
?>
يمكننا أيضا استدعاء دالة بشكل عادي إذا كانت هي تقوم بالطباعة
مثال :
<?
Function sumnormal($a)
{
$a = $a + 100 ;
print $a;
return ;
}
$a=100;
sumnormal($a);
?>
يقوم الأمر print بنفس عمل الدالة echo ولايوجد بينهما اختلاف سوى أن الدالة echo قديمة وهي الأصل أما الدالة print فقد تم إنشاؤها في php4 ولايوجد أي فرق بينهما اطلاقا .
مثال :
<?
Print “احمد”;
?>
ويمكننا بها إخراج نتيجة دالة
<?
Function sumnormal($a)
{
$a = $a + 100 ;
return ;
}
$a=100;
print sumnormal($a);
?>
اين يتم وضع الداله ؟
يمكنك وضع الدالة في أول الكود أو في آخرها أي أنه لافرق بين :
<?
//لاحظ اننا قمنا بتعريف الداله اولا ثم استدعاءها
Function fares($d)
{
print “alfareees@hotmail.com”;
}
fares($d) ;
?>
وبين :
<?
//لاحظ اننا قمنا باستدعاء الداله اولا ثم تعريفها
fares($d) ;
Function fares($d)
{
print “alfareees@hotmail.com”;
}
?>
يمكنك أيضا عدم وضع متغيرات في الدالة كالتالى :
Html_header ()
{
Print “<html><head><title>alfareees</title></head>”;
Return ;
}
هذه الدالة تقوم بكتابة الطور الأول من صفحة html لاحظ أننا لم نقم بوضع أي متغيرات او عوامل او متحولات (سمها كما شئت ) .
تمرير القيم الى الدالة
هناك نوعين من تمرير القيم
1 - تمرير القيمه مباشره الى الداله (passing by value)
وذلك أن نضع القيمة مباشرة بدون إدراجها في متغيرات .
مثال :
<?
Function alfars ($f)
{
$f=$f+$f;
return ;
}
echo alfars(100);
?>
لاحظ أننا قمنا بإدراج القيمة مباشرة للدالة من غير وضعها في متغيرات .
2 - تمرير القيمه عن طريق المرجع (passing by reference)
نقصد بهذا أننا نقوم بوضع القمية في متغير أولا ثم نضع هذا المتغير في الدالة لكي يتم اجراء العمليات عليه مثال :
<?
Function alfars ($f)
{
$f=$f+$f;
return ;
}
$r =1000;
echo alfars($r);
?>
اعداد قيمة افتراضيه للدالة
تستطيع أن تجعل الـPHP4 يقوم بإدراج قيمة إفتراضية عند عدم تمرير متغيرات إليه
مثال :
<?
Function alfars ($f=40)
{
$f=$f+$f;
return ;
}
echo alfars();
?>
إذا لم يتم إعطاء قيمة للدالة فإنها ستفترض أن القيمة هي 40 مباشرة .
أما إذا تم تمرير قيمة أو متغير فإنه سيتم العمل بالقيمة التي تم تمريرها بدلاً من القيمة الإفتراضية
مثال :
<?
Function alfars ($f=40)
{
$f=$f+$f;
return ;
}
echo alfars(100);
?>
مدي المتغيرات (variable scope)
هناك متغيرات محلية (local) ومتغيرات عامة (global) ، نقصد بالمتغيرات المحلية التي تكون في داخل الدالة ونقصد بالعامة التي تكون في كود الـPHP بشكل عام
مثال
<?
//هذا متغير عام
$r= “salem”;
function ala($s)
{
//هذا متغير محلى
$s = “progrramer”;
}
echo $r ;
ala($s);
echo $s;
?>
مثال :
<?
//هذا متغير عام
$r= “salem”;
function ala($s)
{
//هذا متغير محلى
$s = “progrramer”;
}
echo $r ;
$s=10;
echo $s;
?>
في المثال الأول استطعنا طباعة المتغير $r ولم نسطتع طباعة المتغير $s لأنه محلى (لايتم تنفيذه الا داخل الدالة ) وعندما نريد طباعته فإننا يجب أن نطبع ناتج الدالة لكي نحصل عليه (أي أننا لانستطيع طباعته بشكل مباشر )
مثال :
<?
//هذا متغير عام
$r = “salem”;
function ala($s)
{
//هذا متغير محلى
$s = “programmer”;
}
//استطعنا طباعته بشكل مباشر
echo $r ;
ala($s);
//يجب استخدام الداله لكي يتم طباعته
echo ala($s);
?>
لاحظ أننا حتي لو قمنا بعملية طباعة المتغير من نفس الدالة فالناتج يكون مختلف لأن لكل متغير عالمه الخاص به
لكي نقوم بجعل المتغير الذي بداخل الدالة متغيراً عاماً فيمكننا ذلك بإحدي الطريقيتن التاليتين :
الطريقة الأولى :
<?
function ala($y)
{
echo $y. “<br>”;
global $s;
$s = "programmer";
return ;
}
$f =10;
ala($f);
echo $s;
?>
لاحظ أننا عندما استخدمنا global في داخل الدالة لكي يتم تعريف أن المتغير متغير عام وبعدما قمنا باستخدام الدالة قامت بطباعة المتغير المراد طباعته ومن ثم بعد ذلك قامت بتعريف متغير جديد ($s) وهذا المتغير متغير عام لأننا وضعنا قبله الكلمة global فاستطعنا طباعته بكل سهوله .
الطريقة الثانيه : هي أن نستخدم المصفوفة $GLOBALS التي تستخدم في PHP لتعريف المتغيرات العامة أيضا
مثال :
<?
function ala($y)
{
echo $y. “<br>”;
$GLOBALS[“s”] ;
$s = "programmer";
return ;
}
$f =10;
ala($f);
echo $s;
?>
المتغيرات المستقره (static variable)
اقصد بالمتغيرات المستقرة هي التي تكون قيمتها ثابتة
مثال :
<?
Function addfares($y)
{
$y;
$y=$y+1 ;
return $y;
}
echo addfares($y);
echo addfares($y);
echo addfares($y);
echo addfares($y);
?>
<?
Function addfares($y)
{
static $y;
$y=$y+1 ;
return $y;
}
echo addfares($y);
echo addfares($y);
echo addfares($y);
echo addfares($y);
?>
لاحظ عندما عرفنا المتغير بأنه static فانه يحتفظ بقيمته حتي لو انتهت الدالة .
دوال متداخلة
يمكننا عمل تعشيش للدوال مثلما كنا نفعل مع بناء القرارات والتكرارات
مثال :
<?
Function sum($sa)
{
$sa=$sa-1;
function goadd ($r)
{
$r = $r+$r;
return $r;
}
$sa= goadd ($sa);
return $sa;
}
echo sum (15);
?>
في مثالنا هذا لدينا دالتين الدالة الأولى هي sum والدالة الثانية هي goadd
وظيفة الدالة الأولى هي أن تقوم بالإنقاص من العدد الذي يمرر إليها واحد ثم تقوم بتطبيق دالة داخلية فيها هي goadd تقوم بزيادة العدد على نفسه .. ومن ثم قمنا بنداء الدالة الأولى (لأنها هي الاساس التي يوجد به الدوال الداخلية ) وطباعة قيمتها .
اشتمال الملفات (include files)
قد يكون لديك في برنامجك متغير متكرر في أكثر من صفحة أو رسالة خطأ معينة أو تريد إدرج نص كبير الحجم في صفحات متعددة
هنا يمكنك اشتمال ملفات في داخل ملفات الـPHP . هذه الملفات قد تحتوي على نصوص أو كود html أو كود PHP .
إن الصيغة التي تستخدمها لاشتمال الملفات هي :
Include (filename);
مثال :
قم بفتح ملف نصي واكتب فيه ماتشاء ثم احفظه باسم a.txt
قم بانشاء ملف php واكتب فيه ومن ثم احفظه باسم b.php
<?
Include (“a.txt”);
?>
انقلهما الى مجلد السيرفر .. شغل ملف الـ b.php وانظر النتيجة .
يمكنك أن تقوم بإنشاء ملف PHP وتحتفظ فيه بجميع الـfunction المطلوبة لبرنامجك وعند إرادتك لاستخدام أي واحدة منها تقوم فقط باشتمال الملف ومن ثم استدعاءها .
داله تلوين الكود
هل رايت مواقع تقوم بتلوين الكود بشكل مذهل مثل موقع zend ؟.... الأمر بسيط كل ماعليك أولا
قم بوضع الكود في ملف نصي وسمه باي اسم (مثلا file.txt ) وبعد ذلك قم باستخدام الدالة
Show_source
مثال :
<?
show_source ("file.txt");
?>