多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## cache_load ~~~ function cache_load($key, $unserialize = false) { global $_W; if (!empty($_W['cache'][$key])) { return $_W['cache'][$key]; } $data = $_W['cache'][$key] = cache_read($key); //下面的cache_read() if ($key == 'setting') { $_W['setting'] = $data; return $_W['setting']; } elseif ($key == 'modules') { $_W['modules'] = $data; return $_W['modules']; } elseif ($key == 'module_receive_enable' && empty($data)) { cache_build_module_subscribe_type(); return cache_read($key); } else { return $unserialize ? ($data) : $data; } } ~~~ ### cache_read() ~~~ function cache_read($key) { $sql = 'SELECT `value` FROM ' . tablename('core_cache') . ' WHERE `key`=:key'; $params = array(); $params[':key'] = $key; $val = pdo_fetchcolumn($sql, $params); return iunserializer($val); } ~~~ ### iunserializer() > 获取序列化字符的反序列化结果 **示例** ~~~ print_r(iunserializer('a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;}')); Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) ~~~ **函数** ~~~ function iunserializer($value) { if (empty($value)) { return ''; } //判断是否为序列化字符串 //不是就返回值 if (!is_serialized($value)) { return $value; } //unserialize — 从已存储的表示中创建 PHP 的值 //unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。 $result = unserialize($value); //返回值 //返回的是转换之后的值,可为 integer、float、string、array 或 object。 //如果传递的字符串不可解序列化,则返回 FALSE,并产生一个 E_NOTICE。 if ($result === false) { //preg_replace — 执行一个正则表达式的搜索和替换 $temp = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $value); return unserialize($temp); } return $result; } ~~~ `return $unserialize ? iunserializer($data) : $data;` false,