ThinkPHP字段过滤实现方法:
基础模型类内置有数据自动完成功能,可以对字段进行过滤,但是必须通过Create方法调用才能生效。高级模型类的字段过滤功能却可以不受create方法的调用限制,可以在模型里面定义各个字段的过滤机制,包括写入过滤和读取过滤。
字段过滤的设置方式只需要在Model类里面添加 $_filter
属性,并且加入过滤因子,格式如下:
protected $_filter = array( '过滤的字段'=>array('写入过滤规则','读取过滤规则',是否传入整个数据对象), )
过滤的规则是一个函数,如果设置传入整个数据对象,那么函数的参数就是整个数据对象,默认是传入数据对象中该字段的值。
举例说明,例如我们需要在发表文章的时候对文章内容进行安全过滤,并且希望在读取的时候进行截取前面255个字符,那么可以设置:
protected $_filter = array( 'content'=>array('contentWriteFilter','contentReadFilter'), )
其中,contentWriteFilter是自定义的对字符串进行安全过滤的函数,而contentReadFilter是自定义的一个对内容进行截取的函数。通常我们可以在项目的公共函数文件里面定义这些函数。