Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.156.75] |
|
Сообщ.
#1
,
|
|
|
Требуется в любом файле определить наличие декларации или деклараций классов.
Пробовал регулярки вроде: class(.*?)(extends|implements|{) - глючит, ошибается на HTML коде и строках, вроде: $reflector = new \ReflectionClass($this); class([a-zA-Z0-9_\\\s\n\t])*{ - вообще ничего не находит. Шаблон такой: Вначале "class" (обязательно), затем буквы (обязательно) и символы "_", "\", цифры, пробелы, табы, переносы строки (не обязательно) и наконец символ "{" (обязательно). Т.е. должно выдирать все декларации вида: Цитата Class Ololo{ Цитата class ololo extends asdasd { Цитата class ololol implements \system\base { Цитата class ololol extends \system\base { |
Сообщ.
#2
,
|
|
|
#class(\s+[a-z\\_а-я\s]+\s*){#i |
Сообщ.
#3
,
|
|
|
offtop $tokens = token_get_all(file_get_contents('class.php')); foreach($tokens as $tok) { if ($tok[0] == T_CLASS) { var_dump($tok); } } |
Сообщ.
#4
,
|
|
|
Сдлал так, вроде всё пашет
class([a-zA-Z\s]+)([extends|implements]\s+[a-zA-Z0-9\\\s\t\n]*)*{ Добавлено Цитата domencom @ #class(\s+[a-z\\_а-я\s]+\s*){#i А откуда кириллица? о0 Цитата negram @ token_get_all О как! Офигенная функция, не знал, спасибо Добавлено Пока что вопрос решён |
Сообщ.
#5
,
|
|
|
Цитата Serafim @ А откуда кириллица? о0 ещё оффтоп <?php class вася { function кстроке() { return get_class($this); } function __tostring() { return $this->кстроке(); } } class петя extends вася { } $дима = new петя; print($дима."\n"); // петя |
Сообщ.
#6
,
|
|
|
Цитата negram @ ещё оффтоп етить колотить! о_0 Добавлено Хотя как петя наследует васю - тоже страшно |