الدرس الحادي عشر: ادراج الملفات والدوال بأنواعها

متطلبات قبل البدأ  :

  • لا يوجد

اهداف الدرس:

  • اعادة استخدام الكود
  • ادراج الملفات
  • الداله 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 – قم بعمل نموذج المعلومات الشخصيه بإستخدام الدوال الخاصه , ادراج الملفات , واترك لك الحريه للتفكير في الطريقه


الـــدرس الــقادم :

تطبيقات على النماذج وعلى الدوال بشكل كامل , حيث نغطي جميع ما قمنا بتعلمه الى الان

Comments are closed.