Цитата |
---|
написал: Цитата |
---|
написал: Цитата |
---|
написал: Интересно сколько времени ещё пройдёт до тех пор пока кто-нибудь объяснит на примере как надо переделать код, чтоб рабочий код в php 7.4 оставался рабочим и в php 8...? |
Да чего объяснять то? Я же дал ссылку. Проблема основная одна - статически вызывается метод класса, в котором не указано static в коде. Соответственно, проходимся по всем сторонним модулям и прописываем static. |
Добрый вечер, пытаюсь перейти на PHP 8.1 с решением от aspro Код |
---|
function aspro_allcorp2 () { |
заменил на Код |
---|
function __construct () { |
ошибка в обновлении пропала, но сам сайт - белая страницы, в коде: Код |
---|
var arBasketItems = <pre>[Error]
Non- static method CAllUser::GetID() cannot be called statically ( 0 )
/public_html/bitrix/modules/aspro.allcorp2/classes/general/CAllcorp2.php: 3672 #0: CAllcorp2::getBasketItems()
/public_html/bitrix/modules/aspro.allcorp2/classes/general/CAllcorp2.php: 3662 #1: CAllcorp2::checkBasketItems()
/public_html/bitrix/modules/aspro.allcorp2/classes/general/CAllcorp2.php: 1711 #2: CAllcorp2::SetJSOptions()
/public_html/bitrix/templates/aspro-allcorp2/header.php: 31 #3: include_once(string)
/public_html/bitrix/modules/main/ include /prolog_after.php: 107 #4: require(string)
/public_html/bitrix/modules/main/ include /prolog.php: 11 #5: require_once(string)
/public_html/bitrix/header.php: 1 #6: require(string)
/public_html/index.php: 2
----------</pre> |
с 3667 строки в файле public_html\bitrix\modules\aspro.allcorp2\classes\general\CAllcorp2.php код: Код |
---|
public static function getBasketItems () {
global $APPLICATION , $arSite , $USER ;
CModule::IncludeModule( 'iblock' );
if (!defined( 'ADMIN_SECTION' )){
$userID = CUser::GetID();
$userID = ( $userID > 0 ? $userID : 0 );
$arBackParametrs = self ::GetFrontParametrsValues(SITE_ID);
$bOrderViewBasket = ( $arBackParametrs [ 'ORDER_VIEW' ] == 'Y' ? true : false );
if ( $bOrderViewBasket && isset ( $_SESSION [SITE_ID][ $userID ][ 'BASKET_ITEMS' ]) && is_array( $_SESSION [SITE_ID][ $userID ][ 'BASKET_ITEMS' ]) && $_SESSION [SITE_ID][ $userID ][ 'BASKET_ITEMS' ]){
$arIBlocks = $arBasketItemsIDs = array ();
foreach ( $_SESSION [SITE_ID][ $userID ][ 'BASKET_ITEMS' ] as $arBasketItem ){
if ( isset ( $arBasketItem [ 'IBLOCK_ID' ]) && intval( $arBasketItem [ 'IBLOCK_ID' ]) > 0 && !in_array( $arBasketItem [ 'IBLOCK_ID' ], $arIBlocks ))
$arIBlocks [] = $arBasketItem [ 'IBLOCK_ID' ];
$arBasketItemsIDs [] = $arBasketItem [ 'ID' ];
}
$dbRes = CIBlockElement::GetList( array (), array ( 'IBLOCK_ID' => $arIBlocks , 'ID' => $arBasketItemsIDs , 'PROPERTY_FORM_ORDER_VALUE' => false ), false , false , array ( 'ID' ));
while ( $arRes = $dbRes ->Fetch()){
unset ( $_SESSION [SITE_ID][ $userID ][ 'BASKET_ITEMS' ][ $arRes [ 'ID' ]]);
}
return $_SESSION [SITE_ID][ $userID ][ 'BASKET_ITEMS' ];
}
return array ();
}
return false ;
} |
Не понимаю куда там прописать static... |
Вам не static писать надо. Он пишет, что CUser::GetID() вызван статически, а должно быть
Код |
---|
global $USER;
$USER->GetID(); |
То есть где то вот здесь /public_html/bitrix/modules/aspro.allcorp2/classes/general/CAllcorp2.php: 3672 есть такой вызов CUser::GetID() - вместо него должен быть вызов вида, который описан выше