متطلبات قبل البدء :اهداف الدرس:
- الاخطاء البرمجيه
- رسائل الاخطاء
- مراحل الاخطاء
- نهاية المطاف
الاخطاء البرمجيه :اذا كنت تستخدم لغة PHP او اي لغة اخرى فهناك انواع اخطاء تنطبق عليهم
جميعا. شي مريح اتوافقني الرأي ؟ الاخطاء هذه على 3 انواع وهي الاخطاء
الكتابية ,, الاخطاء التشغيليه ,, الاخطاء المنطقيه وسوف نتكلم لكل واحده
على حده لكي تفهم مضمونها وكيفية تجنبها.
الاخطاء الكتابية :يوجد لكل لغة شروط كتابية وتسمى بال ( Syntax ) ونحن الان نريد ان نشرع
هذه الاخطاء المسميه ب ( Syntax Error ) وهذا الخطاء اذا لم نتبع شروطه
فسوف ينتهي بنا المجال الى برنامج لن يعمل بشكل صحيح ولن يتم تشغيله في
الاساس , وتشمل الفاصلة المنقوطه في اخر السطر وان يكون النص بين علامتي
تنصيص واذا قمنا بخرق هذه الشروط فلن يعمل معنا البرنامج بشكل صحيح. من
اقوى الاشياء الموجوده في لغة PHP هي الرسال المفيده التي تظهر لنا عند
وقوع الخطأ, ومثال هذه الرساله هو الشكل التالي :
وقد نتج هذا الخطأ عن الكود التالي :
لو تلاحظ ان خطأنا في الكود في الاعلى هو اننا عندما مررنا النص لدالة
التاريخ لم نقم بإقفال علامتي التنصيص ,, لقد وضعنا علامه واحده ونسينا
الاخرى وللك نتج هذا الخطأ اعزائي. خطأ مبتدئين او خطأ عجله ,, لكم القرار
. لا تنسى ان الاخطاء الكتابيه من اسهل الاخطاء في لغات البرمجه ولذلك انها تعطيك الخطأ والسطر الذي يقع به الخطأ لكي يتم تعديله.
الاخطاء التشغيلية :الاخطاء التشغيليه تعتبر اصعب في الايجاد والاصلاح فهذه الاخطاء لا تنتج
عن خطأ في الكتابه يتم اكتشافه من قبل المترجم. هذه الاخطاء تحصل من طريقة
عمل البرنامج مع ان جميع الاكواد مكتوبه بشكل صحيح ومثال على هذا الخطا هو
عند استخدام العباره include( ‘filename.php ); فهذه العباره صحيحه ولا
يوجد اي خطأ كتابي بها ولكن عند التشغيل سوف تجد ان هناك خطأ لان الملف غير
موجود في الاساس والرساله التي ستظهر لك ان المترجم ليس لديه الصلاحيه
لفتح هذا الملف ( لاحظ انه غير موجود ) وسوف يظهر لك خطأ شبيه بالتالي :
مثال اخر على خطأ تشغيلي هو القسمه على 0 , فلقد كتبت كود صحيح من 5 اسطر ولكن لم يعمل لان القسمه على 0, لاحظ الشكل التالي:
فنتج لدي هذه الرساله الي تقوم بجعل يومك سيئا
, :
وسوف اسهل لك هذا الدرس بإعطائك الاخطاء التشغيليه الشائعه وهي :
- استخدام دوال غير موجوده
- قراءة او كتابة ملفات
- التعامل مع قواعد البيانات
- الاتصال بخدمات الشبكات
- عدم التحقق من المعلومات المدخله
الاخطاء المنطقية :تعتبر الاخطاء المنطقيه من اصعب الاخطاء عثورا واصلاحا في جميع لغات
البرمجه كلها. وخلاصة هذه الاخطاء ان الكود مكتوب بشكل صحيح ويعمل بشكل
صحيح ولكن لا يقوم بفعل النتيجه التي يريدها كاتب الكود البرمجي. مثال على
هذا الخطأ هو دالة التكرار ( for loop ) لاحظ الكود التالي :
لو نظرت الى الكود نظرة سريعه فسوف ترى ان المراد منه هو كتابة الكلمه ”
اهلا ” 10 مرات اليس ذلك صحيحا ؟ ولكن عند تشغيل هذا البرنامج سوف يقوم
بكتابة الكود فقط مره واحده. اذا لم تعمق النظر فلن تجد الخطأ ولكن اذا
نظرت بتركيز شديد سوف ترى ان هناك فاصله منقوطه بعد انتهاء قوس دالة
التكرار وهذه النقه تجعل الداله تدور 10 مرات ثم بعد ذلك تقوم بطباعة
الكلمه اهلا, وهذا هو سبب الخطأ. وايضا يحصل الخطأ في الدالة While اذا لم
نقم بوضع شرط يخرجنا من دالة التكرار.
مراحل الاخطاء :تقوم لغة PHP بإعطائك الحرية في اظهار الاخطاء كيفما تريد , يمكنك
اختيار اي اخطاء تظهر واي منها لا تظهر وبالطبيعه تقوم PHP بإطهار كل
الاخطاء من دون التنبيهات, ومراحل الاخطاء عباره عن ثوابت سوف اعرضها لك في
الجدول الذي ستراه الان :
القيمة | الخطأ | المعنى |
1 | E_ERROR | اظهار الاخطاء الحرجه وقت التشغيل |
2 | E_WARNING | اظهار الاخطاء الغير حرجه وقت التشغيل |
4 | E_PARSE | اظهار الاخطاء الي تتبع الترجم |
8 | E_NOTICE | اظهار التنبيهات |
16 | E_CORE_ERROR | اظهار الخطأ اذا لم يعمل محرك PHP |
32 | E_CORE_WARNING | اظهار الاخطاء الغير حرجه اذا لم يعمل محرك PHP |
64 | E_COMPILE_ERROE | اظهار اخطاء ترجمة الكود |
128 | E_COMPILE_WARNING | اظهار الاخطاء الغير حرجه في ترجمة الكود |
256 | E_USER_ERROR | اظهار الاخطاء المعرفه من المستخدم مسبقا |
512 | E_USER_WARNING | اظهار الاخطاء الغير حرجه المعرفه من المستخدم مسبقا |
1024 | E_USER_NOTICE | اظهار التنبيهات المعرفه من المستخدم مسبقا |
2048 | E_ALL | اظهار كل الاخطاء والانذارات والتنبيهات |
نهاية المطاف :انتهينا !! البعض يقول اخيرا انتهينا من هذه الدروس
, انتهت في يومنا هذا دروس لغة PHP واستطيع ان اضمن لك اذا اتعبت الدروس
بشكل مناسب وقرأت بعض من المصادر الخارجيه ان تحقق 80% من تعلم لغة PHP ,
فالقادم جدا سهل مجرد شي متقدم لما سبق ان شرحناه في هذه الدوره. ارجو ان
تكونو قد استمتعم في دورة PHP ولا تنسو ان بابالاسئله مفتوح في هذا القسم ,
فلا تترد على سؤالي بأي شي يخص هذه اللغه اذا واجهتك مشكلة. بالنسبه الى
الاشياء التي قد تطرأ على لغة PHP في المستقبل من تغييرات او اشياء
مفيده فسوف اقوم بوضعها على دروس متفرقه, اذن لم تنتهي الدروس بل سوف نبقى
على اتصال عن طريق هذه اللغه التي سوف تتربع على عرش لغات البرمجه مستقبلا.
تحياتي لكم
اخوكم / محمد الرحيلي