I'm extending my previous question (Handling exceptions within exception handle) to address my bad coding practice. I'm trying to delegate autoload errors to a exception handler.
<?php
function __autoload($class_name) {
$file = $class_name.'.php';
try {
if (file_exists($file)) {
include $file;
}else{
throw new loadException("File $file is missing");
}
if(!class_exists($class_name,false)){
throw new loadException("Class $class_name missing in $file");
}
}catch(loadException $e){
header("HTTP/1.0 500 Internal Server Error");
$e->loadErrorPage('500');
exit;
}
return true;
}
class loadException extends Exception {
public function __toString()
{
return get_class($this) . " in {$this->file}({$this->line})".PHP_EOL
."'{$this->message}'".PHP_EOL
. "{$this->getTraceAsString()}";
}
public function loadErrorPage($code){
try {
$page = new pageClass();
echo $page->showPage($code);
}catch(Exception $e){
echo 'fatal error: ', $code;
}
}
}
$test = new testClass();
?>
Yukarıdaki komut testClass.php dosyası eksik ise 404 sayfa yüklemek gerekiyordu ve pageClass.php dosya yanı eksik SÜRECE ben bir bakın, bu durumda, ince çalışır
"Fatal error: Class 'pageClass' D bulunamadı: \ xampp \ htdocs \ Test \ PHP \ errorhandle \ index.php on line 29" yerine bir "fatal error: 500" mesajı
Ben her sınıf autoload (nesne oluşturma) için bir try / catch bloğu eklemek istemiyorum, bu yüzden bu çalıştı.
Bu işleme uygun yolu nedir?