## Yii2 Serialization of 'Closure' is not allowed 错误
在开发中,使用Redis缓存服务器存储数据对象时,报错:“Serialization of 'Closure' is not allowed”,
其实也可以通过将对象转成数组的形式,再通过 `serialize()` 序列化存储到 Redis ,但是在类中写了一些关联操作,如果存储对象到数缓存中的话可以在循环数据的时候方便处理。报错如下:
![](https://box.kancloud.cn/b4f4d12bd263d591f4461744af36d291_881x643.png)
我以为是序列化的对象层级太深,想到数组嵌套有层次的限制,查找 php.ini 无果。
通过互联网搜索找到一个类似的情况。如下:https://laravel-china.org/topics/431 提供了一个思路,那就是可能在对象中有 **闭包函数**,其中报错中的 **Closure** 便是一个闭包。
来到类的定义文件中找到,如下代码:
```
public function behaviors()
{
return [
'timestamp' => [
'class' => TimestampBehavior::className(),
'attributes' => [
parent::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
parent::EVENT_BEFORE_UPDATE => 'updated_at',
],
'value' => function () {
return date('Y-m-d H:i:s', time());
},
],
];
}
```
以上代码是对对象的新增和更新时,更新数据库相关字段的。
于是,删除之,使用 Yii2 提供的 `afterSave()`解决。
- 开始
- Yii2开发小技巧
- Yii2使用不同的方式进行邮件发送逻辑处理
- Yii2 Serialization of 'Closure' is not allowed 错误
- Yii创建应用
- Yii应用结构和流程
- Yii的路径别名
- Yii的请求
- Yii的响应
- Sessions 和 Cookies
- Yii自定义全局工具函数
- Yii2模型
- Yii2视图
- Yii2控制器
- 大数据节省内存处理
- 关联查询hasMany、hasOne
- Yii2 URL地址美化
- Yii2整合AdminLTE后台主题
- Yii2模型中的场景
- Yii2中的RBAC
- Yii2项目后台整合yii2-admin模块
- RBAC集成AdminLTE后台主题对菜单进行控制
- Yii2自定义Gii模板
- 修复AdminLTE引用外部字体文件导致访问变慢的情况
- Yii2事件简单使用
- Yii2模型事件
- Yii2使用GridView新增操作按钮
- Yii2向loyout模板文件中传值
- Yii2数据缓存
- Yii2缓存
- Yii2数据缓存之增删改查
- Yii2拓展
- Yii2日期时间插件-datetimepicker
- kartik-v/yii2-widget-fileinput上传插件