推荐大家使用模型操作数据库,在common模块建一个model目录:
在model目录中,我们数据库中有多少个数据表,就在此目录中对应建一个model文件。
目前有一个“php_user_info”表,默认文件内容先这样写:
详细说明:
为什么这样写呢?
遵循MVC设计模式,让程序保持良好的结构!其目的就是对每一个数据表做增删查改操作时,都有一个唯一的入口文件。举一个简单的好处:如果后期对程序做优化,需要修改数据表名称。如果程序中对此数据表的所有操作代码都用的模型对象,那就非常地好改(只需改动第7行代码)。如果程序用的全是数据库对象,那就要改很多地方。
在模型类中都需要写什么代码?
楠神建议尽量做到只写两种用途的代码:
①添加或更新当前表数据时,对数据做优化处理的代码
②增、删、改当前表数据时,验证是否可执行的代码。
除了上面两种用途的代码,尽量不要写其他涉及到业务逻辑的代码。尤其在A表的模型类中不要有对B表的增删改操作代码。
模型文件为什么写在common模块下?
在每个模块下都可以建“model”目录,但只能在本模块下可以调用,而common模块下的model文件所有模块都可以调用。楠神觉着一个数据表只对应一个模型类即可,不需要分模块单独建立。
模型类继承的父类
在官方的手册中,推荐要让模型类继承TP框架的Model抽象类,有关继承父类这块后面再做详细介绍。
如何获取模型对象?
使用model函数。
做个演示,(1)假设common模块和home下都有user模型文件。
可看出,model("User")最后实例化的是home模块下的User。
(2)把home模块下的User模型文件删除。
model("User")发现home模块下没有对应的模型文件,然后就去common模块下去找。
(3)再假如,home模块和common模块都没User模型文件,而admin模块下有User模型文件。
报错了,所以说除了公共模块common下的模型文件,其他模块可以调用。而其他模块下的模型文件是不可以相互调用的。
模型对象我们获取到了,模型对象同样可以使用数据库对象的那几个方法(select、insert、update、delete)操作数据库。
只是有所不同的是查询、更新返回结果是对象。
关于模型,后面还有很多介绍。
注意:
我们写程序时一定保持良好的习惯,注意大小写问题。在使用model函数填写model名称,要保持首字母大写。model名称其实就是一个类名称,我们都知道类首字母都是大写的。
当然model('user')也不出错,但是呢!model('user')与model('User')返回的实例对象不是同一个,也就是说程序同时用到了model('user')与model('User'),等于实例化了两次User模型对象,没有使用到单例模式。