Достался мне сайт на битриксе (версия 20.0.0) от предыдущего админа, то есть "как есть". Версия php на сервере - 5.6. Само собой, сайт работает с ошибками, ибо часть кода (а он у этой версии написан на php7) не работает для php56. Версию php обновить на сервере нет возможности - там еще куча сайтов, которые написаны под php5.6.
Часть кода я смог переписать, воспользовавшись, как ни странно, гуглом. Осталась вот такая ошибка:
[ErrorException] E_RECOVERABLE_ERROR
Argument 1 passed to Bitrix\Sale\Internals\Entity::isMarkedFieldCustom() must be an instance of Bitrix\Sale\Internals\string, string given, called in /home/admin/web/site. xyz/public_html/bitrix/modules/sale/lib/basketitembase.php on line 509 and defined (0)
/home/admin/web/site. xyz/public_html/bitrix/modules/sale/lib/internals/entity.php:688
#0: Bitrix\Sale\Internals\Entity->isMarkedFieldCustom(string)
/home/admin/web/site. xyz/public_html/bitrix/modules/sale/lib/basketitembase.php:509
Кусок кода около 509 строки страницы в basketitembase.php:
public function getFieldValues()
{
$fields = parent::getFieldValues();
$fields['CUSTOM_PRICE'] = $this->isMarkedFieldCustom('PRICE') ? 'Y' : 'N';
return $fields;
}
Сами файлы basketitembase.php и entity.php здесь:
https://yadi.sk/d/ZoSbmQSr7CXTYA
https://yadi.sk/d/tMhPcwfH1a8gXA
1) Как такие конструкции привести к виду, который будет работать на php 5.6?
2) А существует ли в природе какой-нибудь конвертер кода php7 - > php5.6 ? Хе, наверное это фантастика