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