ปัญหาการใช้งาน method_exists แล้วขึ้น error 404
if (method_exists($className, 'index')) {
// to do
}
ฟังก์ชั่นนี้มันจะทำการตรวจสอบว่ามี class และ method ที่ต้องการหรือไม่
แต่โชคร้ายที่ใน PHP5.3 มันคืน Error 404 มาแทนหากไม่พบ class (แต่ใน PHP5.4 ขึ้นมาไม่พบปัญหานี้)
การแก้ไข
ปัญหาก็คือ ฟังก์ชั่นนี้จะคืนค่า 404 หากไม่พบคลาส ดังนั้นวิธีการแก้ปัญหาคือ ใช้การทดสอบว่ามีไฟล์ที่บรรจุคลาสหรือไม่ ก่อนจะเรียกฟังก์ชั่นนี้
if (file_exists('path/to/file.php')) {
include 'path/to/file.php';
if (method_exists($className, 'index')) {
// to do
}
}
อีกวิธีคือใช้ฟังก์ชั่น class_exists() เพื่อทดสอบว่ามีคลาสหรือไม่ก่อน
if (class_exists($className) && method_exists($className, 'index')) {
// to do
}
หมายเหตุ วิธีข้างต้นนี้เป็นการทดสอบคลาสที่โหลดด้วย autoloaders เท่านั้น