ThinkPHP的返回数据类型的增强
过去一直有很多人抱怨ThinkPHP框架的数据返回为什么要用Vo对象和VoList对象,用数组不是更好。其实这个问题也不好解释,因为各有各的考虑和优势吧。其实采用Vo对象是为了定义数据模型和转换的方便考虑,当然,也不得不承认ThinkPHP的数据查询返回上面由于需要转换到Vo或者VoList对象,存在一定的效率问题,今天仔细想了一下,其实也很容易,系统新增了DATA_RESULT_TYPE配置参数来定义默认的返回数据类型是采用数组(DATA_TYPE_ARRAY)还是对象(DATA_TYPE_VO),所以在Dao类的rsToVo和rsToVoList方法里面添加了返回类型的判断,另外,也结合了Db类,Db类的查询返回结果会根据DATA_RESULT_TYPE定义来返回数组还是对象,保持了一致性,避免中间过程存在数组和对象之间的转换。
这样一来,数据模型的定义仍然保持目前的VO对象方式不变(并且会不断地增强和完善),在数据输出的时候可以选择数组和对象两种返回类型。
由于数据返回类型的不同涉及到输出方式的不同,所以模版需要有所变化。因此如果要保证之前的系统正常运作,设置DATA_RESULT_TYPE 为 1或者 DATA_TYPE_VO就可以了。
不过,我正在考虑在标签库的VOLIST和VO标签定义方法里面做到兼容。
该功能目前仍在进一步测试中~