Есть ли способ проверить, что файл содержит класс, интерфейс или функцию, прежде чем включать его в FileReflection ()?

У нас работает цикл обхода дерева, который хорошо идентифицирует файлы PHP, но для каждого файла мы запускаем PHP FileReflection против этого, который требует, чтобы файл включены первый. Для целей этого скрипта нас интересуют только файлы, которые содержат Class, Interface или же Function деклараций.

Есть ли способ определить, содержит ли файл Class, Interface или же Function декларация перед запуском include() в теме?

Я думаю, что это должно быть регулярное выражение против get_file_contents() ценность, но я надеялся на более элегантное (читай: последовательное и надежное) решение.

0

Решение

Сам нашел ответ, для интересующихся …


$tokens = token_get_all(file_get_contents($file,TRUE));
$valid = FALSE;
foreach($tokens as $token) {
if (isset($token[0]) && in_array($token[0],array(T_CLASS,T_FUNCTION,T_INTERFACE))) {
$valid = TRUE;
break;
}
}
if (!$valid) { return NULL; }
include_once $file;
$reflection = new FileReflection($file);
...

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]