 | ماذا نعني بإعادة استخدام الكود ؟ لنذهب بعيدا عن البرمجه
وعن الدنيا بشكل اوسع , لنجعل مخيلاتنا تتحكم بنا لمدة دقيقتان , لماذا نعيد استخدام
شي معين ؟ اننا نعيد استخدامه لانه مفيد جدا اليس كذلك ؟ لو كنت طالب في احدى المدارس
مثلا , لديك شنطه تضع بها كتبك الدراسيه , احببت هذه الشنطه , الجوده , التحمل , القيمه
, تستخدمها كل سنه وكل ترم في الدراسه , وقت الاجازات تهملها , ولكن قد تستعملها لتضع
ملابس السباحه اذا اردت الذهاب الى النادي ...
متطلبات قبل البدأ :
اهداف الدرس:
- اعادة استخدام الكود
- ادراج الملفات
- الداله 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 او ملفات HTML
, ولكن لا تنسى انه اذا كان الملف HTML فلن يتم تنفيذ
كود 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()
ولكن الاغلب استخداما بين المبرمجين هو ان تكون اسماء الدوال احرف
صغيره , وايضا اسماء الدوال لا يمكن ان تبدأ بأرقام او تكون بإسماء دوال موجوده سابقا
في اللغه او قمت بعملها انت
ولا تنسى ان اسماء المتغيرات تختلف , فالمتغير
$name يختلف عن المتغير
$NAME , فلا تقم بنسيان الدرس الثالث.
كتابة الدوال :
الان لنتعلم كيف نقوم بكتابة داله خاصه بنا , طريقة كتابتها هي كالتالي
:

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

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

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

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

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

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

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

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

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

استخدام ادراج الملفات مع الدوال :
الان بعد هذا الدرس الطويل جدا , وهذا الكلام الكثير , واعتذر ان قد جئت
لكم بالملل :) , ماهو رابط الادراج مع الدوال ؟ الجواب هو التالي : نقوم بجعل جميع
دوالنا في ملف لوحدها , ثم نقوم بإدراج هذا الملف الى الملف الرئيسي ونقوم بإستخدام
الدوال , لنأخذ مثالا على ذلك , قلنا في البدايه ان نجعل رأس الصفحه في ملف وذيل الصفحه
في ملف ثم نقوم بإدراجهما الى صفحاتنا اليس كذلك ؟ هناك طريقه اخرى نستطيع عملها ,
نقوم بعمل داله جديده اسمها header( $title )
وداله اخرى اسمها footer()
ونضع كود HTML داخلها , ونحفظها في صفحه اسمها
output.php , وفي كل صفحه نقوم بإدراج الملف
output.php ثم نستخدم الدوال التي قمنا بعملها :) . دعني
اقوم بطرح مثال اخر , لقد قمت بعمل دوال كثيره ودائما تقوم بحفظها في ملف , وتعلم انك
قد تحتاجها في برامجك الاخرى او في اماكن اخرى , فتقوم بإدراج هذا الملف , واعادة استخدام
هذا الكود مره اخرى , من غير ان تقوم بكتابة الكود او تقوم بأي مجهود اخر , ولكن اذا
كنت تتبع هذه الطريقه فلا تقم بنسيان كتابة التعليقات , حتى لا تنسى عمل دوالك الخاصه
سؤال على الدرس :
1 - قم بعمل مقارنة بين عددين تقوم بإدخالها ( الداله ترجع العدد الاكبر
( لا تطبع ) , اذا نسي المستخدم كتابة احد الارقام
, فقم بإستخدام قيمه افتراضيه , واذا قام بإدخال كلمه بدل ارقام , تقوم الداله بطباعة
( الرجاء ادخال رقم وليس حرف )
2 - قم بعمل نموذج المعلومات الشخصيه بإستخدام الدوال الخاصه , ادراج
الملفات , واترك لك الحريه للتفكير في الطريقه
الدرس القادم :
تطبيقات على النماذج وعلى الدوال بشكل كامل , حيث نغطي جميع ما قمنا بتعلمه
الى الان
القسم دروس php | عدد زيارات الدرس 661 زياره
|  |