Что пришлось править
Сайт, с которым пришлось работать использовал одну экзотическую CMS, поэтому большинство работы
как раз и пришлось не на правку скриптов сайта, а на обновление этой CMS.
Для начала пришлось разобраться с функциями ereg и eregi которые в PHP 5.3 объявлены устаревшими
(deprecated).
Так-как функция активно использовалась в движке, то руками править кучу файлов не резон, поэтому
используется Notepad++ у которого есть функция замены в
файлах по
маске регулярного выражения. К сожалению даже в седьмой версии моей текущей IDE
Netbeans такого
счастья не предусмотрено (грустный смайл).
Хорошая вики
по регуляркам Notepad++.
ereg()
Всё упирается в написание корректного регулярника для замены ereg("выражение") на
preg_match("/выражение/").
А вот и оно
барабанная дробь
Search for: ereg\((['"])(.*)(['"])([,\)])
Replace by: preg_match(\1/\2/\3\4
mysql_list_tables()
Эта функция также объявлена устаревшей (deprecated), поэтому нуждается в замене.
Её целью является получить список всех таблиц в целевой базе данных:
$result = mysql_list_tables(self::$db, self::$identifier);
Поэтому она заменяется простым запросом:
$result = mysql_query( "SHOW TABLES FROM ".self::$db, self::$identifier);
*Вместо self::$db конечно может быть записано имя базы.
eval()
Вспоминаем, что начиная с 5.3 РНР не разрешает обращаться к обычным методам с использованием синтаксиса
доступа к статическим
свойствам/методам, и все строки вида
eval ("return $class_name::__construct();");
меняем на такое вот
$class_return = new $class_name();
Ещё пример
$result .= eval(
"parser_".$parser."::$modifier = $modifier; "
"parser_".$parser."::__construct(); "
"return parser_".$parser."::parse(".$value.");"
);
меняем на
$parser_base ="parser_";
$parser_name = $parser_base.$parser;
$parser_obj = new $parser_name();
$parser_obj::$modifier = $modifier;
$result .= $parser_obj->parse( $value );
);
get_called_class()
Эта функция добавлена в 5.3 и на мой взгляд является отличным инструментом для создания более элегантного, компактного и эффективного кода. В своём ORM велосипеде я её активно использую, жаль только, что большинство проектов всё ещё на версиях РНР ниже 5.3.
Пока всё. Успешных проектов!
Наверх