English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل درس PHP الأساسي

دليل درس PHP المتقدم

PHP & MySQL

دليل PHP

استخدام دالة PHP set_error_handler() و مثال

دليل PHP Error & Loggings

يحدد وظيفة set_error_handler() معالج الأخطاء المخصص

القواعد

مزيج set_error_handler (دالة callback $error_handler[, عدد $error_types]);

التعريف والاستخدام

حدد وظيفة المستخدم (error_handler) لتعامل الأخطاء التي تحدث في السكربت.
يمكن لهذه الوظيفة معالجة الأخطاء أثناء التنفيذ باستخدام طريقة معينة من قبلك، مثل، عند حدوث خطأ خطير في التطبيق، أو عند تحفيز خطأ في ظروف معينة (استخدام trigger_error())، يجب تنظيف وتجديد البيانات/الملفات.
من المهم تذكر أن جميع أنواع الأخطاء المحددة في error_types ستتجاوز معالج الأخطاء القياسي في PHP، ما لم يرجع الدالة المربعة FALSE. لن تكون إعدادات error_reporting مؤثرة ويستمر في الاستدعاء وظيفة معالج الأخطاء الخاصة بك - ومع ذلك، يمكنك الحصول على القيمة الحالية لـ error_reporting واستخدامها بشكل مناسب. يجب الانتباه خاصة إلى أن القيمة ستكون 0 عند حدوث خطأ في الجملة التي تحتوي على عمود التحكم @.
لاحظ أيضًا، يجب أن تكون لديك المسؤولية عند الحاجة إلى استخدام die(). إذا عاد معالج الأخطاء، سيستمر السكربت في التنفيذ في السطر التالي الذي حدث فيه الخطأ.
لا يمكن معالجة الأخطاء التالية بواسطة وظيفة المستخدم: E_ERROR، E_PARSE، E_CORE_ERROR، E_CORE_WARNING، E_COMPILE_ERROR، E_COMPILE_WARNING، وكذلك معظم E_STRICT التي تنتج في ملف التكوين عند استدعاء وظيفة set_error_handler().
إذا حدث الخطأ قبل تنفيذ السكربت (مثل تحميل الملف)، لن يتم استدعاء معالج الأخطاء المخصص لأنه لم يتم تسجيله في ذلك الوقت.

الإعدادات

الترقيمالإعدادات والشرح
1

معالج الأخطاء (ضروري)

يحدد أي وظيفة ستتم إجراؤها عند حدوث خطأ. يقدم أدناه جملة error_handler.

2

نوع الأخطاء (اختياري)

يحدد هذا المستوى من إبلاغ الأخطاء الذي سيتم عرض الأخطاء المحددة من قبل المستخدم. القيمة الافتراضية هي "E_ALL". يرجى الرجوع إلى "مستويات إبلاغ الأخطاء في PHP والسجلات" للحصول على مستويات إبلاغ الأخطاء الممكنة.

قواعد اللغة في معالجة الأخطاء

error_function(error_level, error_message, error_file, error_line, error_context);

هذا هو وصف paramenter

  • errno -  المعامل الأول، errno، يحتوي على مستوى الخطأ، وهو integer.

  • errstr -  المعامل الثاني،errstr، يحتوي على معلومات الخطأ، وهو string.

  • errfile - المعامل الثالث هو اختياري،errfile، يحتوي على اسم الملف الذي حدث فيه الخطأ، وهو string.

  • errline - المعامل الرابع هو اختياري، errline، يحتوي على رقم السطر الذي حدث فيه الخطأ، وهو integer.

  • errcontext - المعامل الخامس الاختياري، errcontext، هو array يشير إلى جدول الرموز النشط عند حدوث الخطأ. أي أن arrcontext يحتوي على array يحتوي على جميع المتغيرات في نطاق تنشيط الخطأ. لا يجب على معالج الأخطاء تعديل سياق الخطأ.

القيمة المعدة

 إذا كان هناك معالج أخطاء مسبقًا معرف، فإنه يعود كـ string يحتوي على اسم البرنامج. إذا كان المعالج الأخطاء هو معالج مدمج، فإنه يعود كـ NULL. إذا تم تحديد دالة استدعاء غير صالحة، فإنه يعود كـ NULL أيضًا. إذا كان معالج الأخطاء هو طريقة في فئة، فإن هذا الدالة تعود كـ array مرتبط يحتوي على اسم الفئة والمتدخل.

مثال عبر الإنترنت

فيما يلي استخدام وظيفة set_error_handler:

<?php
   function customError($errno, $errstr, $errfile, $errline) {
      echo "خطأ مخصص: [$errno] $errstr\n";
      echo "خطأ في السطر $errline في $errfile\n";
      echo "نهاية السكربت";
      
      die();
   }
   
   // إعداد معالج الأخطاء
   set_error_handler("customError");
   $test = 0;
   
   // تنشيط الخطأ
   if ($test > -1) {
      trigger_error("تم تنشيط خطأ مخصص");
   }
?>
اختبار لرؤية </>

نتيجة الإخراج:

خطأ مخصص: [1024] تم تنشيط خطأ مخصص خطأ في السطر 16 
في /home/cg/root/1531703/main.php 
نهاية السكربت