Вы можете проверить любое определение класса, которое уже находится в памяти, абстрактное или нет:
abstract class Foo
{
}
$classes = array('Foo', 'Bar');
foreach ($classes as $class) {
$exists = class_exists($class, FALSE);
printf("Class %s exists%s.\n", $class, $exists ? '' : ' not');
}
Выход:
Class Foo exists.
Class Bar exists not.
См. class_exists
, в руководстве приведены подробные сведения о том, как управлять автозагрузкой с помощью этой функции, она изменилась между версиями PHP.
Так что это только для "загруженных" классов. Если вам нужно знать, что для файлов на диске, вам нужно выполнить статический анализ кода и прочитать определения классов «по своему усмотрению», поскольку PHP пока не загружал файлы.
Для этого существует проект под названием staticReflection , который позволит вам собрать информацию о классах и их интерфейсах, файл которых вы знаете только. Он был написан Мануэлем Пихлером, у которого есть больше информации о его блоге .