Успех/неудача автозагрузки при вызове class_exists

Нужно ли вообще знать, удалось ли автозагрузчику при вызове class_exists?

2 ответа

Вы должны проверить class_exists дважды.

  1. Автозагрузка при необходимости
  2. Чтобы узнать, существует ли класс после автозагрузки

Мой рабочий код:

$autoload = spl_autoload_functions() ? true : false; // spl_autoload_functions can return array, empty array or false, but we need boolean
$should_include = $autoload ? class_exists($className, true) : true;

if($should_include && !class_exists($className, false)){ // make sure the class does not exist before including
 if(is_readable($fileName)){
 include_once($fileName);
 } else {
 throw new Exception('Could not include ' . $className);
 }
}

Это пытается использовать ранее определенные автозагрузчики, прежде чем отступить.


Только в конце проверки автозагрузчика для существования класса.

function __autoload($className) {

 //Your code here

 if(class_exists('You_Class', false)) {
 //succeed
 } else {
 //failure
 }
}

licensed under cc by-sa 3.0 with attribution.