ThinkPHP 的新版模型具有很好的扩展性,对模型的 CURD 方法都提供了扩展接口。
模型类提供了多个回调接口,主要扩展接口如下:
全局接口:
初始化接口 _initialize ()
表达式过滤接口 _options_filter (&$options)
add 方法接口:
写入前置接口 _before_insert (&$data,$options)
写入后置接口 _after_insert ($data,$options)
save 方法接口:
更新前置接口 _before_update (&$data,$options)
更新后置接口 _after_update ($data,$options)
同时对 add 和 save 方法的接口:
数据写入(包括写入和更新)数据库之前的处理接口 _facade ($data)
delete 方法接口:
删除后置接口 _after_delete ($data,$options)
select ( findall )方法接口:
查询后置接口(数据集) _after_select (&$result,$options)
find 方法接口:
查询后置接口 (数据) _after_find (&$result,$options)
系统内置的高级模型 AdvModel 、视图模型 ViewModel 和关联模型 RelationModel 本身就是一个模型扩展的很好的例子,本身都是继承 Model 类并且都通过了扩展实现很多的功能。