يمكن أن يكون معالجة خطأ PHP من الصداع إلى حد ما. عادةً ما يستخدم التطبيق معالج خطأ في مستوى النظام و/أو قمع الأخطاء باستخدام @ بادئة. لكن تلك الحالات التي تحتاج فيها التعليمات البرمجية الخاصة بك إلى التصرف على الأخطاء التي يتم تشغيلها أكثر صعوبة.
توفر هذه المكتبة طريقتين للراحة للتعامل مع الأخطاء على كتل التعليمات البرمجية ، إما عن طريق إلقاء استثناءات أو تشغيل رمز رد الاتصال عند حدوث خطأ.
الإصدار الحالي يدعم PHP ^7.2|^8.0 .
تثبيت مع الملحن.
composer require phrity/util-errorhandler
يوفر الفصل طريقتين رئيسيتين ؛ with() و withAll() . الفرق هو أنه with() سيتصرف على الفور على خطأ وإحباط المزيد من تنفيذ التعليمات البرمجية ، بينما سيحاول withAll() تنفيذ كتلة الكود بأكمله قبل التصرف على الأخطاء التي حدثت.
use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ result = $ handler -> with ( function () {
// Code to execute
return $ success_result ;
});
$ result = $ handler -> withAll ( function () {
// Code to execute
return $ success_result ;
});ستقوم الأمثلة المذكورة أعلاه بتشغيل رمز رد الاتصال ، ولكن في حالة حدوث خطأ ، فسوف يلقي إلقاء نظرة خاطفة. ستكون رسالة الخطأ وشدة تلك الخطأ المفعول.
with() سوف يرمي على الفور عندما يحدثwithAll() رمي عند اكتمال الكود ؛ إذا حدث أكثر من خطأ ، فسيتم طرح الأول use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ result = $ handler -> with ( function () {
// Code to execute
return $ success_result ;
}, new RuntimeException ( ' A specified error ' ));
$ result = $ handler -> withAll ( function () {
// Code to execute
return $ success_result ;
}, new RuntimeException ( ' A specified error ' )); ستقوم الأمثلة المذكورة أعلاه بتشغيل رمز رد الاتصال ، ولكن في حالة حدوث خطأ ، فسيتم رميه. سيكون لدى الرمي القابلة للطرح مرفقة errorexception على أنها $previous .
with() سوف يرمي على الفور عندما يحدثwithAll() رمي عند اكتمال الكود ؛ إذا حدث أكثر من خطأ ، فسيتم طرح الأول use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ result = $ handler -> with ( function () {
// Code to execute
return $ success_result ;
}, function ( ErrorException $ error ) {
// Code to handle error
return $ error_result ;
});
$ result = $ handler -> withAll ( function () {
// Code to execute
return $ success_result ;
}, function ( array $ errors , $ success_result ) {
// Code to handle errors
return $ error_result ;
});ستقوم الأمثلة أعلاه بتشغيل رمز رد الاتصال ، ولكن في حالة حدوث خطأ ، فسوف يتصل بكسل الخطأ أيضًا.
with() سيتم تشغيل رد الاتصال على الفور عند حدوث خطأ ؛ يتوقع رد اتصال الخطأ مثيلًا لـ errorexceptionwithAll() لاستدعاء الخطأ عند اكتمال الكود ؛ يتوقع رد اتصال الخطأ مجموعة من errorexception والنتيجة التي تم إرجاعها لاستدعاء الكود كلاهما with() و withAll() يقبل مستوى (مستويات) الخطأ كمعلمة الأخيرة.
use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ result = $ handler -> with ( function () {
// Code to execute
return $ success_result ;
}, null , E_USER_ERROR );
$ result = $ handler -> withAll ( function () {
// Code to execute
return $ success_result ;
}, null , E_USER_ERROR & E_USER_WARNING ); أي قيمة أو مجموعة من القيم المقبولة بواسطة set_error_handler قابلة للاستخدام. الافتراضي هو E_ALL . قائمة الثوابت.
يحتوي الفصل أيضًا على طرق Global set() و restore() .
use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ handler -> set (); // Throws ErrorException on error
$ handler -> set ( new RuntimeException ( ' A specified error ' )); // Throws provided Throwable on error
$ handler -> set ( function ( ErrorException $ error ) {
// Code to handle errors
return $ error_result ;
}); // Runs callback on error
$ handler -> restore (); // Restores error handler Phrity Util ErrorHandler {
/* Methods */
public __construct()
public with (callable $ callback , mixed $ handling = null , int $ levels = E_ALL ) : mixed
public withAll (callable $ callback , mixed $ handling = null , int $ levels = E_ALL ) : mixed
public set ( $ handling = null , int $ levels = E_ALL ) : mixed
public restore () : bool
}| إصدار | PHP | |
|---|---|---|
1.1 | ^7.4|^8.0 | بعض التحسينات |
1.0 | ^7.2|^8.0 | النسخة الأولية |