## Yii2 Serialization of 'Closure' is not allowed 錯誤
在開發中,使用Redis緩存服務器存儲數據對象時,報錯:“Serialization of 'Closure' is not allowed”,
其實也可以通過將對象轉成數組的形式,再通過 `serialize()` 序列化存儲到 Redis ,但是在類中寫了一些關聯操作,如果存儲對象到數緩存中的話可以在循環數據的時候方便處理。報錯如下:

我以為是序列化的對象層級太深,想到數組嵌套有層次的限制,查找 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上傳插件