步骤
1、确定要封装的业务:基于mysqli的数据库底层实现,完成数据库操作的基本诉求
2、明确封装的类的作用,确定内部实现机制
3、根据思路明确封装类的数据和数据操作
4、确定类的控制
示例
1、一个类通常就是一个文件,所以要先确定文件的名字:通常类文件命名规范有两种
2、确定类文件名字后其实也就确定了类名字,因此可以创建一个Sql类
3、类的创建分两种:一是特定使用,即类里面的所有内容只为某次使用;二是通用,即工具类,以后很多地方可以用。
数据库类以后凡是要操作数据库的地方都可以用得到,很多项目都会用到,所以应该是个通用工具类,因此要考虑其到处可用的特性,让其能够灵活
4、数据库的操作最基本的特性不会改变:即需要连接认证,而连接认证的信息是灵活的,所以可以通过设定属性来控制,这些信息也都是不同使用者不同的,应该可以改变,所以可以通过构造方法来实现数据传入
注意:方法设定的原则是一个方法只实现一个简单的功能,不要多个功能堆积到一个方法中。
5、数据库属性会在实例化Sql对象的时候自动初始化
6、数据库要操作的第一件事就是连接认证,所以需要一个连接认证的功能。这里可以使用mysqli面向过程的方法。但是需要建立一个方法来实现连接认证:连接是否成功?
7、连接认证包括数据库选择设定好后,此时还存在一个细节问题:字符集,为了保证数据库连接的正常操作,需要新增一个方法设定字符集
8、初始化完成后,可以实现具体的业务处理:所有的SQL都需要使用mysqli_query执行,也都可能产生错误,因此封装一个专门执行SQL并检查错误的方法
9、上述功能本质也可以是一个写操作(不完整),但是写操作是有业务性的:返回受影响的行数,因此独立增加一个写操作方法,调用上述方法实现,并根据结果返回受影响的行数
10、写操作中可能会有新增需求,因此也对外提供一个获取自增长Id的方法
11、读取操作:读取一条记录(利用check进行SQL执行和错误检查):读取一条数据可能需要获取当前查询结果的列数,增加属性保留
12、读取操作:读取多条记录:可能需要知道总的记录数以及查询结果的列数
13、用户在使用Sql类的时候,必须要进行第一步实例化、然后连接认证和实现字符集设置。这样的话用户操作比较麻烦,应该是用户实例化Sql类就可以直接进行相应的业务处理:所以可以将连接认证、字符集设置在初始化方法中实现(构造方法)
14、确定类的控制:不需要外部访问的私有,需要外部访问的公有,重要的数据私有并增加公有操作方法进行安全控制
14、测试:利用数据库类实现数据库的写操作和读操作
小结
1、类的封装是以功能驱动为前提,相关操作存放到一个类中
2、一个类通常是一个独立的文件,文件名与类名相同(方便后期维护和自动加载)
3、类中如果有数据需要管理,设定属性
4、类中如果有功能需要实现(数据加工),设定方法
5、一个功能通常使用一个方法实现,方法的颗粒度应该尽可能小(方便复用)
6、应该尽可能增加类对成员的控制:即能私有尽可能私有
7、类中需要实现的功能应该由具体的业务来实现支撑