开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第一阶段:封装数据库操作类(构造方法)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/711/detail/12677
封装数据库操作类(构造方法)
内容介绍:
一、封装数据库操作类示例
一、封装数据库操作类示例
一个类通常就是一个文件,在命名的时候一定要做好准备和规范,以后应该怎么用这个类,怎么找到他,所以要先确定文件的名字:通常类文件命名规范有两种:
第一种,文件名字与类名字一样,如 Sql.php,封装的是 Sql 类;
第二种,php7以前开发的时候是混合开发,有面向过程和面向对象一起来完成某一项目的制作,为了区分普通PHP文件,增加中间类描述,如 Sql.class.php
现在 PHP 几乎都是面向对象编程,所以通常采用第一种方式:Sql.php
<?Php
#数据库操作类
因此当前命名数据类的文件为:Sql.php,代表封装的是 Sql 类。使用时,只要找到 Sql 的文件就可知道这是实现数据库的操作
2、确定类文件名字后其实也就确定了类名字,因此可以创建一个 Sql 类。
<?Php
#数据库操作类
Class Sql{
}
在 php 中。类名不区分大小写,但尽量做到严谨,有些框架保证类名的一致性,会区分大小写。
3.类的创建分两种:一是特定使用,即类里面的所有内容只为某次使用;二是通用,即工具类,以后很多地方可以用。
一是解决特定问题的,叫特定使用,只针对项目这一模块具体的功能,这个类能完美的解决当前的问题,但在别的地方可能不能重复使用;特定使用,功能可以不用太灵活,只要能解决当前问题就可以。
通用工具,功能应该大众化,考虑的比较全面,数据的变化会比较多,业务的需求需要考虑全面,可能会细分。
数据库类以后凡是要操作数据库的地方都可以用得到,很多项目都会用到,所以应该是个通用工具类,就意味着别人用起来简单,制作过程很复杂,因此要考虑其到处可用的特性,让其能够灵活。
4.数据库的操作最基本的特性不会改变,因为是基于 mysqli 的,用到的东西就不会有太多的变化:即需要连接认证,而连接认证的信息是灵活的,所以可以通过设定属性来控制,这些信息也都是不同使用者不同的,应该可以改变,所以可以通过构造方法来实现数据传入,使其变成可以灵活处理的。
<?Php
#数据库操作类
Class Sql{
#定义属性:保存数据库初始化的信息
public Shost;
public Sport;
pulic Suser;
public Spass;
public Sdbname;
public Scharset;
#实现数据的初始化:灵活性(允许外部修改)和通用性(给定默认值)
public function _construct(array $array()){
#完成初始化
$this->host = $info[ ' host'] ?? 'localhost';
$this->port = $info['port'] ?? '3306';
$this->user=$info['user']??'root';
$this->pass=$info['pass'] ?? 'root';
$this->dbname=$info['dbname'] ?? 'db_2';
$this->charset = $info['charset'] ?? 'utf8';
}
}
先把属性用 public 做好,主机地址,端口,用户名,密码,数据库名字以及字符集,做好之后,给他一个对应的构造方法,规定传入的必须是一个数组,强制类型,但可以是一个空数组,可以给他默认值,数组是由要求的,是关联数组,下标就是属性的名字,值就是属性对应的数值,对当前属性进行赋值,如果存在,就取这个信息,不存在,就取默认值,这样在保证灵活性的前提下又能保证通用性,数据库在本地操作就可以使用这些,但真实的项目开发不会这样,即便要做,也来自外部配置。
属性初始化就意味着别人要用内容,就可以使用了,传入数据,验证数据。
注意:方法设定的原则是一个方法只实现一个简单的功能,初始化就完成初始化,不要多个功能堆积到一个方法中,堆到一起可以解决问题,但灵活性也会相应的变差。
5.测试
数据库属性会在实例化Sql对象的时候自动初始化。注意代码中的信息是自己定义的要求来传递数据,测试的时候可以用,要保证代码是可以运行的。
#接上述代码(类外测试)
Ssl = new sql();
#使用默认数据库信息
$db = array(
" host' -> '192.168.0.1 ',
"user" -> 'admin' ,
" pass' -> 'admin' ,
" dbname' -> "Taobao'
);
$s2 = new sql(Sdb);
#使用外部数据库信息
访问 Sql.php,没有反应,再加一行下列代码:Var_dump(Ss2);
发现赋值传入了,没有赋值的使用默认值,这样就保证了数据的灵活性。