01
Заметки на полях: Ошибка возникшая из-за перехода с php 5 на php 4
Баги, глюки, ошибки, недочеты, Программирование
Метки (теги) : php, ошибки
В теме конечно прослеживается маразм, но иногда люди, чтобы поддержать старое готовы пожертвовать новым. Так случилось и сейчас, когда заказчик не хотел переходить на php 5 только из-за того, что еще один проект на том же хостинге был написан именно на php4 и был не совместим c php 5. А про переделку его под php 5 речи не шло. Новый проект был сделан на joomla 1.5 и вроде даже на php 4 работал хорошо, без видимых ошибок. Но вот когда мне понадобилось поставить дополнение, которое работало с google maps api v 3.0, меня ждало разочарование.
Вот эта ошибка была всему виной: Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in …
Я порылся по форумам и выяснил, что это именно из-за версии php .
Ошибка была в файле /path_to_root_directory/plugins/system/plugin_googlemap2.php on line 40
вот эта строка public function __construct(&$subject,$config)
слово public в php 4 использовать нельзя, так же как и const, private, protected.
поэтому безжалостно убираем его везде где оно указано в определении методов.
Далее лично у меня в плагине возникла такая ошибка Fatal error: Call to a member function on a non-object in /path_to_root_directory/plugins/system/plugin_googlemap2.php on line 209
вот непосредственно строка кода if ( !$this->params->get( ‘publ’, 1 ) )
я ее поменял на так
$plg = JPluginHelper::getPlugin(‘pluguinType’,'PluginName’);
$params = new JParameter($plg->params);
if ( !$params->get( ‘publ’, 1 ) )
pluguinType и PluginName нужно подставить свои.
Могут возникнуть еще ошибки, но эти первые были, и ставили в ступор поначалу.
Если сталкивались с подобными ошибками, пишите в комментариях. Будет такая веселая библиотека ошибок php4 vs php5