Инструменты для выделения устаревших функций в источниках PHP4? - PullRequest
4 голосов
/ 13 июля 2009

Могу ли я использовать магические инструменты для сканирования исходного кода, написанного для PHP4, чтобы выделить устаревшие функции в PHP5? В настоящее время я использую последнюю версию PHP на сервере и мне нужно портировать этот код. Есть ли что-нибудь, что может мне помочь?

Ответы [ 3 ]

5 голосов
/ 13 июля 2009

PHP 5.3 выдаст предупреждение E_DEPRECATED, если вы установите уровни сообщений об ошибках, чтобы показать их.

1 голос
/ 25 апреля 2012

Я хотел сделать что-то подобное сам. Используя этот список устаревших функций в PHP 5.3.x , я сделал регулярное выражение для поиска любого использования этих функций:

(?i:(call_user_method\(|call_user_method_array\(|define_syslog_variables\(|dl\(|ereg\(|ereg_replace\(|eregi\(|eregi_replace\(|set_magic_quotes_runtime\(|session_register\(|session_unregister\(|session_is_registered\(|set_socket_blocking\(|split\(|spliti\(|sql_regcase\(|mysql_db_query\(|mysql_escape_string\())

(без учета регистра, каждое имя функции включает открывающую скобку, чтобы избежать ложных срабатываний; в противном случае "dl" может вызвать много шума.)

Если вы работаете в системе с find и grep, вы можете просто выполнить что-то вроде этого:

find <directory to search> -type f -name '*.php' -exec grep -R -P -H "<above regex>" {} \;

Просто, чтобы привести более конкретный пример, я использовал следующее:

find htdocs -type f -name '*.php' -exec grep -R -P -H "(?i:(call_user_method\(|call_user_method_array\(|define_syslog_variables\(|dl\(|ereg\(|ereg_replace\(|eregi\(|eregi_replace\(|set_magic_quotes_runtime\(|session_register\(|session_unregister\(|session_is_registered\(|set_socket_blocking\(|split\(|spliti\(|sql_regcase\(|mysql_db_query\(|mysql_escape_string\())" {} \;

Похоже, теперь мне нужно заменить несколько экземпляров session_register и session_unregister на себя!

То же самое можно сделать для устаревших директив и параметров INI.

0 голосов
/ 14 июля 2009

Приложения руководства содержат некоторую информацию о миграции, но я не думаю, что она содержит то, что вы ищете.

Один из способов (который может быть неточным, но может быть использован), о котором я думал, был news.txt, включенный в каждую загрузку PHP. Я пишу скрипт atm, который анализирует этот файл, и проверка на устаревшие функции может быть чем-то, что я мог бы добавить. Я работаю над другим проектом atm, но я хотел бы добавить функциональность для этого в более крупной перестроенной версии.

...