Error ระดับต่างๆใน PHP

ในภาษา PHP จะมีข้อผิดพลาดหรือ error ระดับต่างๆหลายระดับ ซึ่งทั้งหมดจะมีบอกและอธิบายไว้ในค่าคงที่ของ PHP ที่กำหนดไว้ล่วงหน้าแล้ว.

ใน Predefined constants ที่กำหนด error ระดับต่างๆของ PHP นั้น แม้จะมีมากมายเกินกว่า 10 รายการ แต่ว่าผลที่จะแสดงออกมาเมื่อโค้ดของเรามีข้อผิดพลาดนั้น จากที่พบมามี 4 ระดับเท่านั้น ดังจะอธิบายในตารางต่อไปนี้

ระดับ รายละเอียด
Notice ระดับ Notice นั้นเป็นการแจ้งให้รู้. โค้ดจะยังทำงานต่อไปได้ แต่จำเป็นจะต้องแก้ไข.
Warning ระดับ Warning นั้นเป็นการแจ้งเตือน. โค้ดก็จะยังทำงานต่อไปได้เช่นกัน แต่จำเป็นจะต้องแก้ไขโดยด่วน.
Fatal ระดับ Fatal นั้นเป็นข้อผิดพลาดที่ถือว่าร้ายแรง. โค้ดจะไม่สามารถทำงานต่อไปได้เลย และจะต้องแก้ไขทันที.
Parse ข้อผิดพลาดนี้สร้างจากตัว PHP parser โดยมักมีที่มาจากการเขียนโค้ดผิด. โค้ดจะไม่สามารถทำงานต่อไปได้เลย และจะต้องแก้ไขทันที.

ตัวอย่างโค้ดที่ทำให้เกิดข้อผิดพลาดระดับต่างๆ

ก่อนที่จะทำการทดลองกับโค้ดต่อไปนี้ ขอแนะนำให้ปรับ php.ini ให้เหมาะสมสำหรับการเขียนโปรแกรมเสียก่อน.

ต่อไปนี้จะขอยกตัวอย่างโค้ดต่างๆที่มักจะผิดพลาดกันบ่อยๆ และทำให้เกิดข้อผิดพลาดระดับต่างๆ. โค้ดบางตัวจะมีผลกับรุ่น PHP ต่างๆกัน โปรดอ่านโดยละเอียด.

ข้อผิดพลาดระดับ Notice.

echo $undefinedVar;

โค้ดด้านบนนี้จะทำให้เกิดข้อผิดพลาด Notice: Undefined variable: undefinedVar ใน PHP รุ่นที่เก่ากว่า 8.0 เนื่องจากตัวแปร $undefinedVar ไม่ได้ถูกกำหนดไว้.
สำหรับ PHP 8.0 หรือใหม่กว่า ข้อผิดพลาดนี้จะถูกยกระดับขึ้นไปที่ Warning.

echo $_GET['name'];

โค้ดด้านบนนี้จะทำให้เกิดข้อผิดพลาด Notice: Undefined index: name ใน PHP รุ่นที่เก่ากว่า 8.0 เนื่องจากในหน้าเว็บปกติที่ไม่มี URL parameter ?name=xxx ส่งไปด้วย จะไม่สามารถเรียกหาค่า index ที่ชื่อ name ในตัวแปร $_GET ได้เลย.
สำหรับ PHP 8.0 หรือใหม่กว่า ข้อผิดพลาดนี้จะถูกยกระดับขึ้นไปที่ Warning.

ข้อผิดพลาดระดับ Warning.

$array = '';
echo array_keys($array);

โค้ดด้านบนนี้จะทำให้เกิดข้อผิดพลาด Warning: array_keys() expects parameter 1 to be array, string given ใน PHP รุ่นที่เก่ากว่า 8.0 เนื่องจาก argument แรกของฟังก์ชั่น array_keys() ต้องมีค่าเป็น array แต่ในโค้ดกำหนดค่าที่เป็น string ไปให้.
สำหรับ PHP 8.0 หรือใหม่กว่า ข้อผิดพลาดสำหรับฟังก์ชั่นนี้จะถูกยกระดับขึ้นไปที่ Fatal.

include 'not-exists.php';

โค้ดด้านบนนี้จะทำให้เกิดข้อผิดพลาด Warning: include(not-exists.php): Failed to open stream: No such file or directory ใน PHP ทุกรุ่น เนื่องจากไฟล์ที่จะ include นั้นไม่มีอยู่จริง.

ข้อผิดพลาดระดับ Fatal.

echo notExistsFunction();

โค้ดด้านบนนี้จะทำให้เกิดข้อผิดพลาด Fatal error: Uncaught Error: Call to undefined function notExistsFunction() ใน PHP ทุกรุ่น เนื่องจากฟังก์ชั่นที่เรียกใช้นั้นไม่มีอยู่จริง.

ข้อผิดพลาด Parse.

echo 'blue'

โค้ดด้านบนนี้จะทำให้เกิดข้อผิดพลาด Parse error: syntax error, unexpected end of file, expecting "," or ";" ใน PHP ทุกรุ่น เนื่องจากเขียนโค้ดผิด ตกเครื่องหมาย semi colon (;) ที่ท้ายบรรทัด.

สรุป

ความแตกต่างของข้อผิดพลาดแต่ละระดับจะช่วยให้คุณตรวจสอบและแก้ไขโค้ดได้อย่างทันท่วงที เพื่อความปลอดภัย, ความรวดเร็วและประสิทธิภาพของโปรแกรมที่เขียนขึ้นมา. และขอแนะนำว่าเมื่อพบข้อผิดพลาดระดับ Warning ให้ทำการแก้ไขโดยด่วน อย่าปล่อยทิ้งไว้ เพราะจากประสบการณ์แล้ว PHP มันจะยกระดับข้อผิดพลาดนี้ในรุ่นต่อไปให้กลายเป็น Fatal ซึ่งก็คือร้ายแรงและโค้ดจะหยุดทำงาน. ข้อผิดพลาดเหล่านี้จะมีประโยชน์มากหากคุณใส่ใจกับมันและไม่ปกปิดมันเอาไว้ เพราะมันจะแจ้งเตือนคุณพร้อมรายละเอียด ช่วยเหลือให้คุณแก้ไขโค้ดได้อย่างถูกต้องในเบื้องต้น.

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

คุณอาจใช้แท็กHTMLและแอททริบิวต์เหล่านี้: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>