ماذا
نعني بإعادة استخدام الكود ؟ لنذهب بعيدا عن البرمجه
وعن الدنيا بشكل اوسع , لنجعل مخيلاتنا تتحكم بنا لمدة
دقيقتان , لماذا نعيد استخدام شي معين ؟ اننا نعيد
استخدامه لانه مفيد جدا اليس كذلك ؟ لو كنت طالب في
احدى المدارس مثلا , لديك شنطه تضع بها كتبك الدراسيه
, احببت هذه الشنطه , الجوده , التحمل , القيمه ,
تستخدمها كل سنه وكل ترم في الدراسه , وقت الاجازات
تهملها , ولكن قد تستعملها لتضع ملابس السباحه اذا
اردت الذهاب الى النادي ...
بسم
الله الرحمن الرحيم
متطلبات قبل البدأ :
اهداف
الدرس:
- اعادة استخدام
الكود
- ادراج الملفات
- الداله
require
- الداله
include
- لماذا احتاج الى
الدوال ( functions )
- الدوال (
functions )
- استخدام ادراج
الملفات مع الدوال
اعادة
استخدام الكود :
ماذا نعني
بإعادة استخدام الكود ؟ لنذهب بعيدا عن البرمجه وعن
الدنيا بشكل اوسع , لنجعل مخيلاتنا تتحكم بنا لمدة
دقيقتان , لماذا نعيد استخدام شي معين ؟ اننا نعيد
استخدامه لانه مفيد جدا اليس كذلك ؟ لو كنت طالب في
احدى المدارس مثلا , لديك شنطه تضع بها كتبك الدراسيه
, احببت هذه الشنطه , الجوده , التحمل , القيمه ,
تستخدمها كل سنه وكل ترم في الدراسه , وقت الاجازات
تهملها , ولكن قد تستعملها لتضع ملابس السباحه اذا
اردت الذهاب الى النادي , تستخدمها لحفظ اشياء القيمه
, لست طالبا ؟ لنقل انك معلم , لديك بعض من شروحات
الدروس على الكمبيوتر , تستخدمها في كل سنه , تغير
المنهج الذي تقوم بتدريسه او اصدرت نسخه جديده , لن
تقوم بمسح جميع شروحاتك , بل سوف تقوم بتعديل اللازم.
لنرجع الان عالمنا ونعيد السؤال لماذا نحتاج الى اعادة
استخدام الكود, تخيل انك تعمل في شركه, والشركه لديها
موقع وانت المسؤول عنه , رأس صفحات الموقع كلها نفس
الشي , ذيل صفحات الموقع كله نفس الشي , مرت الايام
كبرت الشركه وزاد عدد الصفحات الى اكثر من 100 صفحه ,
جاء اليك المدير طالبا بإضافة البريد الالكتروني في
رأس كل صفحه من صفحات الموقع , او طلب تغييرات طفيفه ؟
ماذا سوف تفعل ؟ مجهود كبير اليس كذلك ؟ مفهوم اعادة
استخدام الكود يعتبر هدف من اهداف هندسة برمجيات
الكمبيوتر , ليس ذلك لانهم كسولين ولا يحبون العمل او
كتابة الاكواد , ولكن لانه الافضل من نواحي كثيره , من
حيث القيمه , من حيث الاعتماد على الكود , من حيث
التماسك ولكل منها كلام يطول , ويمكن البحث في
google او في
MSN بكتابة العباره التاليه
: ( why reuse code in programming ).
ادراج
الملفات :
قرأت قبل
قليل مثال عملك في الشركه , والموقع الذي اصبح عباره
عن 100 صفحه , كيف يمكنك التغلب على هذه المشكله , هنا
تأتي فائدة ادراج الملفات , لنقم بحل المشكله , عند
دخولنا لمنتديات وحتى شبكة ارسن , تجد ان جميع الصفحات
لها رأس واحد ( header )
ولها ذيل واحد ( footer )
والاختلاف دائما يكون في محتوى الصفحه ( في النصف )
وهذا ما نسميه (
body ) , لنقم بمشاهدة مثال
على ذلك , انظر التالي :

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

قم بحفظ
الملف الان بإسم ( word.php )
, افتح ملف جديد من محرر الاكواد واكتب التالي
:

لن تستغرب
اذا كان ناتجنا هو التالي :

اذن نستنتج
ان الداله require تحتاج
الى ملف لكي يكون مدخلها , وعندما ننفذ الكود فكأننا
كتبنا التالي:

يمكن ادراج
اي ملف تريد بإي امتداد تريد , ولكن اسمع هذه النصيحه
, وادرج دائما ملفات PHP او
ملفات phpL , ولكن لا تنسى
انه اذا كان الملف phpL فلن
يتم تنفيذ كود PHP بداخله ,
يجب ان يكون PHP لينفذ.
الان لنرى موقع الاعلى للشركه , وكيف سيتم الادراج ,
لاحظ الكود التالي :
الملف
header.php

الملف
footer.php

الملف
main.php

انقر على الصوره
لتكبيرها
ارأيت الان
ميزة هذه الداله ؟ واعتقد ان ميزة اعادة استخدام الكود
اتضحت الان ايضا , وسوف تتضح لك اكثر في الدوال (
functions ) .
الداله
include :
هذه الداله
لها نفس عمل الداله require
تماما , الفرق الوحيد بينهما , هو كيفية اخراج الخطأ ,
فلو اخطأت في الداله include
فسوف يكون الخطأ هو
تحذير ويكمل تنفيذ عمل الملف (
Warning ) اما اذا اخطأت في الداله
require فسوف يكون الخطأ
رئيسي ويتوقف عمل تنفيذ الملف اي الخروج من الكود
كاملا ( Fatal Error ) ,
مثال على خطأ يمكن ان تقع به ,
ادراج ملف غير موجود , انظر الى الشكل التالي :
خطأ require
:
اضغط على الصوره لتكبيرها

خطأ include
:
اضغط على الصوره لتكبيرها:

ملاحظه :
نستخدم الطريقه في الامثله اعلى اذا كان الملف يوجد في
نفس المجلد , اما اذا كان في مجدل داخلي اسمه
include فيكون كالتالي
(
require('include/header.php')
) وهكذا دواليك , كأنك تتعامل مع
اي برنامج اخر لتقوم بتحدد مكان ملف
لماذا
احتاج الى الدوال ( functions )
:
لو اردنا
ان نقوم في كل برنامج لنا بمقارنة عددين مع بعضهما
البعض , الن يكون طويلا ان نقوم في كل برنامج بكتابة
كود المقارنه ؟ لماذا لا نقوم بوضع هذا الكود في داله
, وفقط نقوم بمناداة هذه الداله , ونجعلها تتكفل بجميع
المخرجات لدينا , اليس ذلك اسهل ؟ وافضل ؟ اذن سوف
نتكلم الان عن الدوال بالتفصيل , لكي ترى فائدة هذه
الخاصيه في لغة PHP
الدوال
( functions ) :
هل تريد
انشاء دالة خاصه بك ؟ كالداله
print مثلا ؟ ستتعلم الطريقه هنا ,وسوف نتطرق
في هذا الموضوع الى الدوال عدة نقاط وهي كالتالي :
مناداة الداله , اخطاء في مناداة الدوال , اسماء
وحالات الدوال, كتابة الدوال, مدخلات الدوال , مرجعات
من الدوال , ارجاع بيانات من الدوال. لنبدأ بشرح هذه
النقاط :
مناداة
الدالة :
رأيت كثيرا
من الدوال خلال الدروس من الاول الى العاشر, منها
PRINT ومنها
SETTYPE ومنها
GETTYPE ومنها
REQUIRE و
INCLUDE , اليس كذلك ؟
كتابة الدوال تكون كالتالي :

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

ويجب عليك
وقتها ان تقوم بملاحظة شيئين , الاول : هل الدالة
موجوده او غير موجوده , الثاني : اذا كانت الداله
موجوده هل الاسم ممنوع استخدامه ؟ لانه من الطبيعي انه
لا يمكنك انشاء داله يكون اسمها
print لانها اساسيه في PHP
اسماء
وحالات الدوال :
هنا يجب
عليك ان تعرف ان مناداة الدوال التي تقوم بإنشائها
ليست حساسه لحالة الاحرف فالداله
function_name() هي
نفسها
Function_Name() وهي ايضا نفسها الداله
FUNCTION_NAME()
ولكن الاغلب استخداما بين المبرمجين
هو ان تكون اسماء الدوال احرف صغيره , وايضا اسماء
الدوال لا يمكن ان تبدأ بأرقام او تكون بإسماء دوال
موجوده سابقا في اللغه او قمت بعملها انت
ولا تنسى
ان اسماء المتغيرات تختلف , فالمتغير
يختلف عن المتغير
, فلا تقم بنسيان
الدرس الثالث.
كتابة
الدوال :
الان
لنتعلم كيف نقوم بكتابة داله خاصه بنا , طريقة كتابتها
هي كالتالي :

الان لنقم
بطباعة داله خاصه بنا , نريد ان نقوم بإنشاء دالة تقوم
بطباعة العباره ( اهلا وسهلا بكم ) , افتح محرر
الاكواد وقم بكتابة التالي :

لاحظ ان
العباره function يجب ان
تقوم بكتابتها اذا اردت ان تقوم بإنشاء داله خاصه بك ,
وفي الكود بالاعلى لون العباره ( اسود ). هل تحتاج ان
اقول لك كيفية استخدام هذه الداله ؟ اكيد انك تعرف ,
والطريقه هي كالتالي :

مدخلات
الدوال :
عندما رأيت
الداله include لاحظت انها
تحتاج مدخل لكي تعمل بشكل صحيح , اليس كذلك ؟ واعتقد
ان بعد الدوال التي سوف تقوم بإنشائها تحتاج الى هذه
الخاصيه , اذن كيف تقوم بعملها , نفس طريقة الاولى
والاختلاف فقط في التالي :

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

طبعا هنا ,
اذا قمت بإستخدام الداله من غير كتابة مدخل , اي لم
تقم بإعطائها قيمه , سوف يكون هناك خطأ , اذا هذه
الطريقه يتوجب عليك ان تقوم بتحديد المدخل ايا كان
نوعه , لو كنت تريد طباعة رقم سوف تستخدم نفس الدالة
ولكن بدل العباره ( داله بها مدخلات ) تقوم بكتابة
الرقم و مثال على ذلك (
sayWord( 15 ); )
وسوف تقوم بطباعة الرقم.
ماذا لو اردنا ان نجعل اكثر من معطى للداله ؟ هل يمكن
ذلك ؟ نعم , اكتب في محرر الاكواد التالي :

يمكنك
جعل عدد لا نهائي من المعطيات للداله , والامر يعود
الى طريقتك واحتياجك.
لم ننتهي
بعد , هناك نقطه اخرى , ماذا لو اردت ان يكون احد
المعطيات اختياري ؟ مثالنا في الاعلى يفرض علينا ان
نقوم بإدخال عبارتين , ماذا لو اردنا ان نجعل عباره
اجباريه والاخرى اختياريه , كيف يمكن عمل ذلك ؟ عن
طريق تعيين قيمه افتراضيه للمعطى في الداله , اكتب في
محرر الاكواد التالي :

لنقم الان
بعمل تطبيق صغير , في برنامجنا نريد ان يقوم بإدخال
رقمين , ايا كانت , ونقوم بمقارنتها لنرى من الاكبر
والاصغر , لنقم بذلك معا , افتح محرر الاكواد واكتب
التالي :

يمكن ان
تستخدم العباره IF اوSWITCH
او FOR او
WHILE داخل الدوال ,
نصيحه : ( عاملها كأنها برنامج
مصغر )
مرجعات
من الدوال :
هناك نوعان
من الدوال , نوع يقوم بإرجاع مخرجات , والاخر يقوم
بإرجاع بيانات , سوف نعرف الان النوع الاول , ماذا
نعني بإرجاع مخراجات ؟؟؟ كما عملنا في المثال التطبيقي
, يكون ارجاع الداله مخرجات اذا كان هناك العباره
echo او العباره
print او كود
phpL
ارجاع
بيانات من الدوال :
اعني
بإرجاع بيانات من الدوال , اي ارجاع قيم , ليست
للطباعه بمعنى اصح ونستخدم في هذه الحاله العباره
return , في مثالنا
التطبيقي , على سبيل المثال نريد ان نعرف ماهو العدد
الاكبر لنستخدمه في كود اخر , لنرى كيفية عمله الان ,
اكتب التالي في محرر الاكواد :

ولو اردنا
ان نقوم بطباعة العدد الى المتصفح سوف نقوم بالتالي :

استخدام
ادراج الملفات مع الدوال :
الان بعد
هذا الدرس الطويل جدا , وهذا الكلام الكثير , واعتذر
ان قد جئت لكم بالملل :) , ماهو رابط الادراج مع
الدوال ؟ الجواب هو التالي : نقوم بجعل جميع دوالنا في
ملف لوحدها , ثم نقوم بإدراج هذا الملف الى الملف
الرئيسي ونقوم بإستخدام الدوال , لنأخذ مثالا على ذلك
, قلنا في البدايه ان نجعل رأس الصفحه في ملف وذيل
الصفحه في ملف ثم نقوم بإدراجهما الى صفحاتنا اليس
كذلك ؟ هناك طريقه اخرى نستطيع عملها , نقوم بعمل داله
جديده اسمها
header( ) وداله اخرى اسمها
footer()
ونضع كود phpL
داخلها , ونحفظها في صفحه اسمها
output.php , وفي كل صفحه نقوم بإدراج الملف
output.php ثم نستخدم
الدوال التي قمنا بعملها :) . دعني اقوم بطرح مثال اخر
, لقد قمت بعمل دوال كثيره ودائما تقوم بحفظها في ملف
, وتعلم انك قد تحتاجها في برامجك الاخرى او في اماكن
اخرى , فتقوم بإدراج هذا الملف , واعادة استخدام هذا
الكود مره اخرى , من غير ان تقوم بكتابة الكود او تقوم
بأي مجهود اخر , ولكن اذا كنت تتبع هذه الطريقه فلا
تقم بنسيان كتابة التعليقات , حتى لا تنسى عمل دوالك
الخاصه