Данное предупреждение связано с использованием PHP версии 5.3 или выше. В PHP 5.3 некоторые функции, параметры и возможности были отмечены как DEPRECATED (НЕИСПОЛЬЗУЕМЫЕ). В последующих версиях они будут удалены.
В частности, неиспользуемой возможностью стало использование конструкций вида: $instance = & new SimpleClass();
Можно либо
1) перейти на более старую версию PHP
2) отключить показ DEPRECATE ошибок
Для этого в php.ini установить:
1 |
error_reporting =E_ALL &~ E_DEPRECATED |
или в PHP файле задать:
1 |
error_reporting (E_ALL &~ E_DEPRECATED); |
Можно с помощью функции phpinfo() проверить каким на данный момент установлен уровень error_reporting. Он показывается там числовым значением.
Если указанный способ отключить показ DEPRECATED не работает — проверьте наличае других вызовов функции error_reporing.
Но нужно учесть, что с выходом PHP 6.0 данная конструкция будет вообще запрещена к использованию.
3) А лучше всего — немножко поредактировать код.
Например, большинство DEPRECATED в коде Joomla 1.0 и разных модулей было связано именно с использованием & перед new. Например:
1 |
$module =& new ExtendedMenuModule(); |
Нужно просто удалить &.
Однако таких мест много. Но, если мы используем Eclipse, то просто заменить все вхождения «& new» на «new» во всех файлах. Для этого в меню выбираем Search>Search. Далее выбираем FileSearch, в поле containing text вводим «& new», нажимаем на кнопку Replace.
Будет осуществлён поиск по всем файлам проекта. И через некоторое время появится окошко Replace Text Matches.
C помощью кнопки Preview рассматриваем код, в котором будет произведена замена. И если всё нам нравится — то в нём в поле With вводим » new». И нажимаем OK
Если не сработало (у меня почему-то так произошло) обновляем весь проект (устанавливаем курсор на папку проекта и нажимаем F5) и повторям замену.
Возможны и исключения. Например, \modules\exmenu\loader\menu.menuloader.class.php on line 286. Если там удалить &, то меню работает некорректно.
Подробнее об изменениях в версии 5.3: http://php.su/php/?migration53