Всем привет!
Аналогичная многим из нас проблема случилась и у меня при переходе с php 7.4 на более новую
Код |
---|
[Error]
Non-static method CCache::CIBlock_GetList() cannot be called statically (0)
/home/c/cm82406/scorp/public_html/bitrix/modules/aspro.scorp/classes/general/CCache.php:489
#0: include_once
/home/c/cm82406/scorp/public_html/bitrix/modules/aspro.scorp/include.php:18
#1: include_once(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/lib/loader.php:190
#2: Bitrix\Main\Loader::includeModuleInternal(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/lib/loader.php:146
#3: Bitrix\Main\Loader::includeModule(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/classes/general/module.php:142
#4: CModule::IncludeModule(string)
/home/c/cm82406/scorp/public_html/bitrix/templates/aspro-scorp/header.php:41
#5: include_once(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/include/prolog_after.php:120
#6: require(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/include/prolog.php:11
#7: require_once(string)
/home/c/cm82406/scorp/public_html/bitrix/header.php:1
#8: require(string)
/home/c/cm82406/scorp/public_html/index.php:2
----------
|
В коде я нашел объявление функции CLBlock_GetList() и прописал к ней вызов через public static, и получаю уже следующую ошибку:
Код |
---|
[Error]
Non-static method CCache::_InitCacheParams() cannot be called statically (0)
/home/c/cm82406/scorp/public_html/bitrix/modules/aspro.scorp/classes/general/CCache.php:12
#0: CCache::CIBlock_GetList(array, array)
/home/c/cm82406/scorp/public_html/bitrix/modules/aspro.scorp/classes/general/CCache.php:489
#1: include_once(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/aspro.scorp/include.php:18
#2: include_once(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/lib/loader.php:190
#3: Bitrix\Main\Loader::includeModuleInternal(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/lib/loader.php:146
#4: Bitrix\Main\Loader::includeModule(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/classes/general/module.php:142
#5: CModule::IncludeModule(string)
/home/c/cm82406/scorp/public_html/bitrix/templates/aspro-scorp/header.php:41
#6: include_once(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/include/prolog_after.php:120
#7: require(string)
/home/c/cm82406/scorp/public_html/bitrix/modules/main/include/prolog.php:11
#8: require_once(string)
/home/c/cm82406/scorp/public_html/bitrix/header.php:1
#9: require(string)
/home/c/cm82406/scorp/public_html/index.php:2
---------- |
В коде модуля CCaсhe я не нашел в явно виде объявления _InitCacheParams(), чтобы дописать и к нему статический вызов. Часть кода CCache прилагаю ниже. Помогите пожалуйста разобраться
Код |
---|
if(!class_exists("CCache")){
class CCache {
static public $arIBlocks = NULL;
static public $arIBlocksInfo = NULL;
static public $bEnabled = true;
public static function CIBlock_GetList($arOrder = array("SORT" => "ASC", "CACHE" => array("MULTI" => "Y", "GROUP" => array(), "RESULT" => array(), "TAG" => "", "PATH" => "", "TIME" => 36000000)), $arFilter = array(), $bIncCnt = false){
list($cacheTag, $cachePath, $cacheTime) = self::_InitCacheParams("iblock", __FUNCTION__, $arOrder["CACHE"]);
$obCache = new CPHPCache();
$cacheID = __FUNCTION__."_".$cacheTag.md5(serialize(array_merge((array)$arOrder, (array)$arFilter, (array)$bIncCnt)));
if(self::$bEnabled && $obCache->InitCache($cacheTime, $cacheID, $cachePath)){
$res = $obCache->GetVars();
$arRes = $res["arRes"];
} else{
$arRes = array();
$arResultGroupBy = array("GROUP" => $arOrder["CACHE"]["GROUP"], "MULTI" => $arOrder["CACHE"]["MULTI"], "RESULT" => $arOrder["CACHE"]["RESULT"]);
unset($arOrder["CACHE"]); $dbRes = CIBlock::GetList($arOrder, $arFilter, $bIncCnt);
while($item = $dbRes->Fetch()){ if($item['ID']){
$item['LID'] = array();
$dbIBlockSites = CIBlock::GetSite($item['ID']);
while($arIBlockSite = $dbIBlockSites->Fetch()){
$item['LID'][] = $arIBlockSite['SITE_ID'];
} |