Всем привет!
Аналогичная многим из нас проблема случилась и у меня при переходе с php 7.4 на более новую
Аналогичная многим из нас проблема случилась и у меня при переходе с 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'];
} |