Подтвердить что ты не робот

Как определить, не существует ли класс без запуска ошибки

Я столкнулся с интересной дилеммой. В классе DataMapper я генерирую имя класса, которое будет использоваться для возвращенных строк из базы данных.

Дело в том, что все мои классы загружены автоматически и могут поступать из многих мест (библиотека, приложение/модели и т.д.), и я хотел проверить, действительно ли создано имя класса. Теперь можно подумать, что:

try
{
    $test = new $className();
}
catch(Exception $ex)
{
    // Class could not be loaded
}

Но, конечно, php-ошибки (вместо того, чтобы бросать исключение) говорят, что класс не найден... Не очень полезно. Не удалось переписать автозагрузчик в Zend_Loader для поиска всех каталогов, чтобы узнать, может ли класс быть загружен, есть ли способ выполнить это?

Для кого-то интересно, почему мне нужно будет это сделать, а не просто вызвать ошибку Class Not Found, если класс не найден, я хочу сгенерировать класс в заранее определенном месте, чтобы сделать мою жизнь легкой как этот проект идет.

Спасибо заранее! Терри

P.S. Дайте мне знать, если вам больше нужна информация.

4b9b3361

Ответ 1

Функция PHP class_exists() имеет флаг запуска автозагрузчика, если класс еще не загружен:

http://www.php.net/class_exists

Итак, вы просто пишете

if (!class_exists($className)) {
    // generate the class here
}