การจัดการข้อผิดพลาด 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 ;
});ตัวอย่างด้านบนจะเรียกใช้รหัสการโทรกลับ แต่หากเกิดข้อผิดพลาดมันจะโยน errorexception ข้อความแสดงข้อผิดพลาดและความรุนแรงจะเป็นของข้อผิดพลาดทริกเกอร์
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 รายการค่าคงที่
ชั้นเรียนยังมีวิธีการทั่วโลก 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 | เวอร์ชันเริ่มต้น |