Анализатор кода PHP

hayk

Новичок
IntenT
Читать мануал и комменты к нему я умею. И я уже с token_get_all() поигрался.
А ты бы прежде чем давать примеры, проверял бы их что ли.
 

hayk

Новичок
Господа, у меня большая просьба.
Прежде чем писать, давать советы и задавать вопросы прочтите внимательно мой мой первый пост. Мне нужен ответ на вопрос содержащийся в нем.
А иначе этот топик превратится хз что. Тут и так уже половину постов можно грохнуть.

P.S. Модеры, перенесите пожалуйста этот топик в "PHP для продвинутых..."
 

lucas

Guest
hayk

Можно мне, сирому, один пример замены стандартной строковой функции на самописную/враппер с обоснованием полезности такой замены?
 

IntenT

SkyDiver
Blindman
Проверял, запускал, взял его со страницы мануала, еслибы ты не поленился - то увидел бы его тоже.
Что такое 304 - константа, искать ее символьное представление - лень. Кому надо - найдет.
Как я ее определил?
var_dump($token)
Еще вопросы есть?
 

IntenT

SkyDiver
hayk
Проверял, проверял
Отфильтровать константы это уже другое дело.
А пример я привел к тому, что прекрасно отлавливаются ВСЕ функции, присутствующие в файле.
(в противоположность твоему заявлению о невозможности отловить встроенные функции пхп)
 

hayk

Новичок
IntenT
Этот пример я видел - и он не катит, т.к. например у file_get_contents() token - 305(T_STRING). Из результатов этой ф-ции нельзя определить где тут ф-ция php. Я об этом писал выше.
У меня PHP 4.3.4 (Win32).

token_name(304) возвращет T_DNUMBER (Интересно, как ты его получил?)

Отловить то можно, но определить что это ф-ции - нет.
 

IntenT

SkyDiver
hayk
Как я его получил - я описал выше.
Если задаться целью - можно выбрать при некотором терпении те значения, которые тебя удовлетворят.

Если ты вбил себе в голову, что это не подходит - ищи наздоровье то, что тебя устроит
 

Blindman

Новичок
IntenT Я тебе подскажу. Имя этой константы T_STRING, и если бы ты не поленился написать ее в таком виде, вопросов бы не возникло. А в PHP 4.3.4 Win T_STRING имеет значение 305
 

IntenT

SkyDiver
Blindman
Я ясно написал, мне некогда было искать.

За подсказку, спасибо, в любом случае.
 

hayk

Новичок
IntenT
Спасибо за попытки помочь, но это все равно не то: юзая file_get_contents() можно всего лишь предположить что это ф-ция. Но мне кроме ф-ций нужны еще и модуль, куда она входит и версия php.
 

hayk

Новичок
lucas
В php строковые ф-ции работают с со строками из однобайтных символов (MB String не в счет). Для того что бы правильно вычислить кол-во символов в строке из многобайтых символов - надо написать свой аналог strlen().
 

гоша

Guest
hayk

> file_get_contents() token - 305(T_STRING). Из результатов этой ф-ции нельзя определить где тут ф-ция php.

Почему нельзя.
Имена функций всегда T_STRING, как и константы.
Отличить функцию от константы получится?

> кол-во символов в строке из многобайтых символов - надо написать свой аналог strlen().

уже написали
[m]mb_strlen[/m]
 

Blindman

Новичок
hayk
Определить, что это функция очень просто: за T_STRING следует необязательный T_WHITESPACE, затем открывающая скобка. Только необходимо также отслеживать двойные кавычки ,T_START_HEREDOC и T_END_HEREDOC, так как T_STRING может быть и внутри строки.

По поводу встроенных функций.
Скачиваешь исходники документации в XML формате, там на каждое расширение/группу функций отдельный каталог, на каждую функцию отдельный файл.

Вообще, это стоит того? :confused:
 

hayk

Новичок
гоша
>уже написали
>[m]mb_strlen[/m]
Ты бы процитировал что ли весь текст:
В php строковые ф-ции работают с со строками из однобайтных символов (MB String не в счет). Для того что бы правильно вычислить кол-во символов в строке из многобайтых символов - надо написать свой аналог strlen().
Я знаю что уже написали, я даже знаю как ее использовать, я даже ее использую (нехило, да?). Но есть одна небольшая проблема: этот модуль у хостеров редко встретишь, точно так же как и iconv.
Для того что бы в конечном итоге все работало надо написать свои аналоги ф-ций MB String, но исходный код надо все равно надо менять: strlen на mb_strlen, strpos на mb_strpos, и т.д. (перегрузку ф-ций не предлагать).
 

hayk

Новичок
Blindman
>Определить, что это функция очень просто: за T_STRING следует необязательный T_WHITESPACE, затем открывающая скобка. Только необходимо также отслеживать двойные кавычки ,T_START_HEREDOC и T_END_HEREDOC, так как T_STRING может быть и внутри строки.
Логика определения того является это ф-цией или нет может быть достаточно запутанной - я уже об этом думал, пержде чем писать. Но если у меня будет база ф-ций, то будет намного проще.

>По поводу встроенных функций.
Скачиваешь исходники документации в XML формате, там на каждое расширение/группу функций отдельный каталог, на каждую функцию отдельный файл.

Ну я решил пока остановиться на этом на этом варианте.

>Вообще, это стоит того? :confused:
Время покажет.
 
Сверху