منتديات المُنى والأرب

منتديات المُنى والأرب (http://www.arabna312.com//index.php)
-   دروس في الكمبيوتر (http://www.arabna312.com//forumdisplay.php?f=258)
-   -   تعلم لغة php بالكامل - محمد الرحيلي (http://www.arabna312.com//showthread.php?t=19695)

قلب., 9 - 11 - 2011 11:41 PM

اهداف الدرس:
  • تهيئة النصوص بإستخدام الداله eval()
  • الداله die()
  • معرفة معلومات عن بيئة PHP
  • مشاركة الاكواد البرمجيه (highlighting soruces )

تهيئة النصوص بإستخدام الداله eval() :

هذه الداله المفيده نلاحظ استخدامها دائما في عمل نظام القوالب, وعمل هذه الداله هو ان تقوم بأخذ نص وتنفذه على انه كود من لغة PHP فعلى سبيل المثال, لو كتبنا الكود التالي:
http://arccn.net/images/php/l31e1.gif
سيكون الناتج لهذا السطر هو:
http://arccn.net/images/php/l31e2.gif
لنأخذ مثالا على اماكن استخدام هذه الداله, تخيل ان لديك كود برمجي كامل داخل قاعدة البيانات وتريد ان تقوم بتنفيذ هذا الكود البرمجي, اذن الداله eval هي طريقك الى هذا العمل. عمل اخر وهو لو اردت ان تقوم بإنشاء كود برمجي من دالة تكرار , فتنفيذ هذا الكود هو الداله eval.
الداله die() :
تعلمنا سابقا الداله exit وقلنا اننا لو اردنا الخروج عن تنفيذ العمل وايقاف عمل البرنامج سوف نستخدم هذه الداله , ولكن لو تلاحظ ان الداله exit لا تقوم بإرجاع اي شي الى المتصفح, اذن لدينا الان الداله die وهي تقوم بإخراجك من الكود البرمجي ولكن مع كتابة الخطأ الذي حصل في حالة اردت ذلك. لاحظ المثال التالي:
http://arccn.net/images/php/l31e3.gif
ويوجد نظير لهذه الداله الا وهو exit() وتستخدم بنفس طريقة لداله die()
معرفة معلومات عن بيئة PHP :
يوجد هناك شيئين نحتاج الى معرفتهما وهما
  1. الداله التي تدل على مالك البرنامج وهي get_current_user() وتستخدم دائما في معرفة التراخيص التي يحملها مستخدم البرنامج
  2. معرفة متى اخر مره تم تعديل البرنامج الخاص بنا عن طريق الكود التالي :
    echo date(‘g:i a, j M Y’ , getlastmod() );
    ولو قمنا بتجربة العمل سوف يظهر لنا التالي:
http://arccn.net/images/php/l31e4.gif
وناتج التعديل هو كما يظهر لك في الصوره التاليه:
http://arccn.net/images/php/l31e5.gif
مشاركة الاكواد البرمجيه ( highlighting soruces ) :
في بعض الاحيان تريد ان تقوم بمشاركة الكود مع بعض المبرمجين , او تريد ان تقوم بعمل برنامج دروس ويظهر لك الكود من غير تنفيذه , اذن سوف تستعمل الداله التي تسمى show_source() او highlight_file() وكل هذه الدالتين تقوم بنفس العمل تماما, وتأخذ هذه الدالتين ملفات ( يجب ان تكون ملفات PHP او لن يكون هناك معنى ) , وعند استخدامها سوف تقوم الداله بجعل الكود يظهر بشكل مرتب وبشكل الوان مرتبه , لنأخذ مثالا يوضح لنا الفكره , لدينا ملف اسمه fun.php ويوجد به الكود التالي:
http://arccn.net/images/php/l31e6.gif
ونريد ان يظهر هذا الكود بدل من ان يتم تنفيذه ,, فسوف نقوم بعمل ملف ونكتب به التالي:
http://arccn.net/images/php/l31e7.gif
واذا قمنا بتشغيل هذا البرنامج فسوف يظهر لنا الشكل التالي:
http://arccn.net/images/php/l31e8.gif

قلب., 9 - 11 - 2011 11:43 PM

اهداف الدرس:
  • الاخطاء البرمجيه
  • رسائل الاخطاء
  • مراحل الاخطاء
  • نهاية المطاف
الاخطاء البرمجيه :

اذا كنت تستخدم لغة PHP او اي لغة اخرى فهناك انواع اخطاء تنطبق عليهم جميعا. شي مريح اتوافقني الرأي ؟ الاخطاء هذه على 3 انواع وهي الاخطاء الكتابية ,, الاخطاء التشغيليه ,, الاخطاء المنطقيه وسوف نتكلم لكل واحده على حده لكي تفهم مضمونها وكيفية تجنبها.

الاخطاء الكتابية :
يوجد لكل لغة شروط كتابية وتسمى بال ( Syntax ) ونحن الان نريد ان نشرع هذه الاخطاء المسميه ب ( Syntax Error ) وهذا الخطاء اذا لم نتبع شروطه فسوف ينتهي بنا المجال الى برنامج لن يعمل بشكل صحيح ولن يتم تشغيله في الاساس , وتشمل الفاصلة المنقوطه في اخر السطر وان يكون النص بين علامتي تنصيص واذا قمنا بخرق هذه الشروط فلن يعمل معنا البرنامج بشكل صحيح. من اقوى الاشياء الموجوده في لغة PHP هي الرسال المفيده التي تظهر لنا عند وقوع الخطأ, ومثال هذه الرساله هو الشكل التالي :
http://arccn.net/images/php/l32e1.gif
وقد نتج هذا الخطأ عن الكود التالي :
http://arccn.net/images/php/l32e2.gif
لو تلاحظ ان خطأنا في الكود في الاعلى هو اننا عندما مررنا النص لدالة التاريخ لم نقم بإقفال علامتي التنصيص ,, لقد وضعنا علامه واحده ونسينا الاخرى وللك نتج هذا الخطأ اعزائي. خطأ مبتدئين او خطأ عجله ,, لكم القرار http://arccn.net/wp-includes/images/...icon_smile.gif . لا تنسى ان الاخطاء الكتابيه من اسهل الاخطاء في لغات البرمجه ولذلك انها تعطيك الخطأ والسطر الذي يقع به الخطأ لكي يتم تعديله.

الاخطاء التشغيلية :
الاخطاء التشغيليه تعتبر اصعب في الايجاد والاصلاح فهذه الاخطاء لا تنتج عن خطأ في الكتابه يتم اكتشافه من قبل المترجم. هذه الاخطاء تحصل من طريقة عمل البرنامج مع ان جميع الاكواد مكتوبه بشكل صحيح ومثال على هذا الخطا هو عند استخدام العباره include( ‘filename.php ); فهذه العباره صحيحه ولا يوجد اي خطأ كتابي بها ولكن عند التشغيل سوف تجد ان هناك خطأ لان الملف غير موجود في الاساس والرساله التي ستظهر لك ان المترجم ليس لديه الصلاحيه لفتح هذا الملف ( لاحظ انه غير موجود ) وسوف يظهر لك خطأ شبيه بالتالي :
http://arccn.net/images/php/l32e3.gif
مثال اخر على خطأ تشغيلي هو القسمه على 0 , فلقد كتبت كود صحيح من 5 اسطر ولكن لم يعمل لان القسمه على 0, لاحظ الشكل التالي:
http://arccn.net/images/php/l32e4.gif
فنتج لدي هذه الرساله الي تقوم بجعل يومك سيئا http://arccn.net/wp-includes/images/...icon_smile.gif , :
http://arccn.net/images/php/l32e5.gif

وسوف اسهل لك هذا الدرس بإعطائك الاخطاء التشغيليه الشائعه وهي :
  1. استخدام دوال غير موجوده
  2. قراءة او كتابة ملفات
  3. التعامل مع قواعد البيانات
  4. الاتصال بخدمات الشبكات
  5. عدم التحقق من المعلومات المدخله
الاخطاء المنطقية :
تعتبر الاخطاء المنطقيه من اصعب الاخطاء عثورا واصلاحا في جميع لغات البرمجه كلها. وخلاصة هذه الاخطاء ان الكود مكتوب بشكل صحيح ويعمل بشكل صحيح ولكن لا يقوم بفعل النتيجه التي يريدها كاتب الكود البرمجي. مثال على هذا الخطأ هو دالة التكرار ( for loop ) لاحظ الكود التالي :
http://arccn.net/images/php/l32e6.gif
لو نظرت الى الكود نظرة سريعه فسوف ترى ان المراد منه هو كتابة الكلمه ” اهلا ” 10 مرات اليس ذلك صحيحا ؟ ولكن عند تشغيل هذا البرنامج سوف يقوم بكتابة الكود فقط مره واحده. اذا لم تعمق النظر فلن تجد الخطأ ولكن اذا نظرت بتركيز شديد سوف ترى ان هناك فاصله منقوطه بعد انتهاء قوس دالة التكرار وهذه النقه تجعل الداله تدور 10 مرات ثم بعد ذلك تقوم بطباعة الكلمه اهلا, وهذا هو سبب الخطأ. وايضا يحصل الخطأ في الدالة While اذا لم نقم بوضع شرط يخرجنا من دالة التكرار.
مراحل الاخطاء :
تقوم لغة PHP بإعطائك الحرية في اظهار الاخطاء كيفما تريد , يمكنك اختيار اي اخطاء تظهر واي منها لا تظهر وبالطبيعه تقوم PHP بإطهار كل الاخطاء من دون التنبيهات, ومراحل الاخطاء عباره عن ثوابت سوف اعرضها لك في الجدول الذي ستراه الان :

القيمة
الخطأ
المعنى1E_ERRORاظهار الاخطاء الحرجه وقت
التشغيل2E_WARNINGاظهار الاخطاء الغير حرجه
وقت التشغيل4E_PARSEاظهار الاخطاء الي تتبع
الترجم8E_NOTICEاظهار التنبيهات16E_CORE_ERRORاظهار الخطأ اذا لم يعمل
محرك PHP32E_CORE_WARNINGاظهار الاخطاء الغير حرجه
اذا لم يعمل محرك PHP64E_COMPILE_ERROEاظهار اخطاء ترجمة الكود128E_COMPILE_WARNINGاظهار الاخطاء الغير حرجه
في ترجمة الكود256E_USER_ERRORاظهار الاخطاء المعرفه من
المستخدم مسبقا512E_USER_WARNINGاظهار الاخطاء الغير حرجه
المعرفه من المستخدم مسبقا1024E_USER_NOTICEاظهار التنبيهات المعرفه
من المستخدم مسبقا2048E_ALLاظهار كل الاخطاء
والانذارات والتنبيهات



اهداف الدرس:
  • مقدمه
  • مؤسس التصنيف
  • مدمر التصنيف
  • الخواص
  • المعاملات
  • الكلمه المفتاحيه Final
مقدمه :

عرفنا في الدرس السابع عشر و الثامن عشر ماهي برمجة الكائنات وماهي فوائدها وكيف تعمل وكيف نستخدمها, وعند اصدار النسخه رقم 5 من لغة PHP تم اعادة كتابة وهيكلة الكائنات في اللغه. تم اعادة النظر في نظام الكائنات القديم, واصدار نظام كائنات جديد, اقوى , افضل, خصائص اكثر. هذا هو موضوع درسنا لهذا اليوم, التعرف على جديد برمجة الكائنات في الاصدار الخامس من PHP و كما وعدتكم سوف يعتبر ( متفرقات ) و البقاء على الخط مع اللغه بعد انتهائنا من الدوره الكامله.
مؤسس التصنيف :
هل تذكر عندما كنا في الدرس السابع عشر نقوم بإنشاء مؤسس التصنيف بالطريقه ( function ) دعني اخبرك بشيئ ولكن لا تغضب مني, فتلك الطريقه لم تكن رسميه ولكن قمت بتعليمها لك لانها ( افضل ), والدليل على ذلك فالان لغة PHP في الاصدار رقم 5 قامت بجعل خاصية ( مؤسس التصنيف ) والذي يعني (Constructor ) شيئ اساسي في برمجة الكائنات. انشاء مؤسس تصنيف في الاصدار رقم 5 يكون عن طريق الكلمه المفتاحيه ( __construct() ) واليك مثال يشرح لك الطريقه , انظر التالي:
http://arccn.net/images/php/l33e3.gif
ومن مسامحة هذه اللغه الجميله, فقد جعلت الطريقه القديمه ( التي قمت بتعلمها في الدرس السابع عشر ) تعمل ايضا, فلو ان المترجم لم يجد الكلمه المفتاحيه ( __construct() ) فسوف يقوم بالبحث عن معامل يبدأ بنفس اسم الكائن لكي يتم اعتباره انه مؤسس التصنيف.
ملاحظه: اذا كنت تستخدم مبدأ الوراثه واردت ان تقوم بأستخدام ( مؤسس التصنيف ) للكائن الاب في الكائن ( الوارث ) فيكون ذلك بالطريقه التاليه ( parent::__construct() ) لاحظ الكود التالي:
http://arccn.net/images/php/l33e4.gif
مدمر التصنيف :
في الاصدار الخامس من هذه اللغه تم اضافة خاصية تسمي ( Destructor ) ومعناها ( المدمر ) وهي شبيه للغات البرمجه مثل ( C++ )وهذا المعامل يعمل في حالتين,
  1. جميع المؤشرات الى الكائن الغيت
  2. او عند تدمير الكائن بشكل مؤكد
ولاستخدام هذا المعامل نستخدم الكلمه المفتاحيه ( __destruct) ومثال على ذلك , لاحظ الكود التالي:
http://arccn.net/images/php/l33e5.gif
ملاحظه : نفس طريقة مؤسس التصنيف في حالة الوراثه يتم استخدامها مع مدمر التصنيف
ملاحظه : يتم استدعاء معامل التدمير حين انتهاء عمل برنامجك بشكل تلقائي
الخواص :
تم في الاصدار الخامس تغيير طريقة الخواص بالكامل في لغة PHP فأصبحت اكثر قوة واكثر تحكما, والمبدأ الذي تحدثنا عنه (Encapsulation ) تم تطبيقه بالكامل في هذا الاصدار. فعند تعلمنا لبرمجة الكائنات في الدوره سابقا كنا نقوم بإنشاء الخواص بالشكل التالي :
http://arccn.net/images/php/l17e3.gif
ولكن الرائع في PHP5 هو اننا الان نتحكم في ( اظهار ) الخواص وهناك 3 انواع لهذا التحكم وهي :
1. عام (Public )
وهذه الخاصيه تجعل الخاصيه قابلا للوصول من اي مكان تريده. فلو ان عندنا كائن اسمه ( car ) وبه الخاصيه ( color ) فيمكننا الوصول الى هذا الخاصيه بالطريقه التاليه ( $car->color ).
2. محمي (Protected )
وهذه الخاصيه تعني ان الخاصيه قابلا للوصل فقط من الكائنات التي تكون ( وارثه ) للكائن الاصلي.
3. سري (Private )
هذه الخاصيه هي (الافضل) وهي تعني ان التحكم في الخواص يكون فقط داخل الكائن الذي تم انشاءه ( في نفس الـ class )
لنقم برؤية مثال سريع لكيفية انشاء خواص بهذه الطرق الثلاث, لاحظ الكود التالي:
http://arccn.net/images/php/l33e1.gif
فلو على سبيل المثال , اردنا ان نقوم بإستخدام الخاصيه ( $on ) في كائن يرث الكائن ( car ) فلن يمكننا ذلك الا عن طريق (معاملات ) تقوم بجعلنا نتحكم في الخاصيه.
ملاحظه : استخدام الكلمه المفتاحيه ( var ) لانشاء الخواص لن تعمل في لغة PHP الاصدار الخامس.
المعاملات :
ايضا في الاصدار الخامس من لغة PHP تم تغيير طريقة بناء المعاملات, واصبحت مثل الخواص, فهناك معاملات ( عامه ) و ( محميه ) و( سريه ) لاحظ المثال التالي:
http://arccn.net/images/php/l33e2.gif
ملاحظه : انشاء معامل من غير ( public ) او ( private ) او ( protected ) فذلك سوف يجعل مترجم PHP يفترض ان المعامل من النوع (public ) تلقائيا.
الكلمة المفتاحيه Final :
هذه الكلمه المفتاحيه تستخدم مع الكائن او المعامل وهي تجعل هذا الكائن على المرحله ( النهائيه ) ولا يمكن ابدا تغييره بإستخدام الطريقه ( overrideing ) للكائن او المعاملات. وزيادة على ذلك فإن الكائن الذي يبدأ بالكلمه Final فلا يمكن ان يستخدم في مبدأ الوراثه. لاحظ المثال التالي:
http://arccn.net/images/php/l33e6.gif
وناتج عمل هذه الطريقه عند انشاء كائن من الـ sportCar سوف يؤدي ذلك الى خطأ من النوع ( Fata error ).

سؤال على الدرس :

  1. قم بإنشاء كائن كامل بطريقة PHP 5 ورئة ناتجك , وهل لديك القابليه لان تعمل مع هذه التغيرات بكل سهوله ام لا.
  2. قم بمراجعة دليل تشغيل لغةPHP من الموقع الرسمي (اضغط هنا ) لكي تقوم بالمرور على بعض الخواص التي لم امر عليها في هذاالدرس, فكما تعلم انا اقوم بجزء وانت اذا لديك الاهتمام تكمل باقي الجزء
اخوكم / محمد الرحيلي
منقول عن موقع http://arccn.net


الساعة الآن 07:29 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. منتديات المُنى والأرب

جميع المشاركات المكتوبة تعبّر عن وجهة نظر كاتبها ... ولا تعبّر عن وجهة نظر إدارة المنتدى