7.0 破坏性变更清单
Elgg 7.0 包含六项破坏性变更。每一条按”如果你之前用到了 X,现在应该改成 Y”的格式说明。
1. ElggObject 直接创建不再支持
7.0 移除了通过 new ElggObject() 直接实例化并保存的用法。
改法:统一使用工厂方法:
$object = new ElggObject();$object->subtype = 'my_type';$object->save();
// 7.0$object = elgg_create_object(['subtype' => 'my_type']);批量创建场景改用 elgg_call(ELGG_IGNORE_ACCESS, fn) 包裹工厂调用。
2. 实体 actions 统一
6.x 中部分实体类型有独立的 action 文件(actions/save/object 等)。7.0 统一为标准化的实体 action 注册。
改法:检查 mod/*/actions 下自定义 action,改用 elgg_register_entity_action() 或迁移到统一 action 路由;前端表单的 action 属性同步更新。
3. External pages 重构
外置页面插件(about / terms / privacy 等静态页)的数据结构从 object subtype 重构为独立实体类型。
改法:如果站点自定义过 External pages 的模板或读取逻辑,更新为新的实体类型;仅使用后台编辑界面的站点无感知。
4. 内置 Redis / Memcached 支持移除
7.0 移除了核心内置的 Redis / Memcached 缓存后端配置。
改法:使用独立的缓存插件或框架级方案(如 PSR-6/PSR-16 实现)。本地文件缓存不受影响,simple cache 与系统缓存照常工作。
5. CSS Crush 移除
视图层的 CSS 处理库 CSS Crush 被移除。
改法:如果插件在 CSS 中使用了 CSS Crush 特有语法(变量、extend),改为原生 CSS 或构建期处理。普通 CSS 文件不受影响。
6. 用户资料 Twitter 字段移除
用户资料的默认 Twitter 字段被移除。
改法:依赖该字段的站点在插件中自行注册 profile 字段;已有数据在升级后仍保留在数据库中,不会丢失。
升级前的检查脚本建议
在代码库中全局搜索以下关键词,快速定位受影响点:
grep -rn "new ElggObject" mod/grep -rn "csscrush\|css_crush" mod/ views/grep -rn "twitter" mod/ languages/