Как проверить существует ли класс в файле?
Этим кодом я выбираю все файлы:
$dir = WWW.'/libs';
$arrayLibs = array();
if($handle = opendir($dir)){
while(false !== ($file = readdir($handle))) {
if($file != "." && $file != ".."){
//$arrayLibs[] = $file;
if (class_exists($file)) {
$arrayLibs[] = __CLASS__;
}
}
}
}
В этом же цикле хочу проверять в каждом файле существует ли класс (любой, не какой-то определенный) и выводить его название, если он существует.
Самый надежный вариант - использовать token_get_all
Как-то так:
$tokens = token_get_all(file_get_contents(file));
$classStart = false;
foreach ($tokens as $token) {
if ($token[0] === T_CLASS) {
$classStart = true;
}
if ($classStart && $token[0] === T_STRING) {
$class = $token[1];
break;
}
}
Более развернутый пример поиска класса(с пространством имен) в файле можете посмотреть у меня в проекте на гитхабе
Можно парсить каждый файл и проверять следующим образом, есть ли в нем классы. Наверно это костыль, но рабочий:
<?php
$data = file_get_contents('file.php');
preg_match_all('/class [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $data, $matches);
if (!empty($matches[0])) {
foreach ($matches[0] as $val) {
var_dump(substr($val, 6));
}
}
я сдела таким образом, он отрабаывает прекрастно:
$dir = WWW.'/libs';
$arrayLibs = array();
if($handle = opendir($dir)){
while(false !== ($file = readdir($handle))) {
if($file != "." && $file != ".."){
$className = substr($file, 0, -4);
require_once $dir.'/'.$file;
if (class_exists($className)) $arrayLibs[] = 'Class name: '.$className;
else $arrayLibs[] = 'Class <b>'.$className.'</b> dont exist';
}
}
}
print_r($arrayLibs);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как, в MySql реализовать рейтинг пользователей по баллам: Есть таблица, table(user_id, score)Известен id пользователя, нужно узнать на каком он месте среди...
Такой вопрос: например, какой-нибудь умник хочет ввести именно путь к файлу (например, не sie/category ,а site/views/category/indexphp), могу ли я распознать это...
Есть страница в котором вот такой код: