思考:现在掌握了很多面向对象相关的内容,但是什么时候封装类?怎么封装?如果使用类成员?
引入:其实类的封装没有多么复杂,但是需要一个熟练的过程来确定哪些东西可以放到类里,该用什么样的形式等。我们通过封装一个数据库的操作来综合练习下
封装数据库类 掌握
定义:封装数据库操作类,即根据数据库的操作需求,来确认数据库操作类该有什么样的功能,以及这些功能该如何实现。
1.一个类通常就是一个文件,所以要先确定文件的名字:通常类文件命名规范有两种。
- 文件名字与类名一样,如Sql.php
- 为了区分普通php文件,增加中间类描述,如Sql_class.php
- 现在php几乎都是面向对象变成,所以通常采用第一种方式:因此当前命名规范数据类的文件为:Sql_php
2.确定类文件名字后其实也就是确定了类名字,因此可以创建一个Sql类。
<?php //数据库操作类 class Sql{ } ?>
3.类的创建分两种:一是特定使用,即类里面的所有内容只为某次使用;二是通用,即工具类,以后很多地方可以用;
特定使用,功能可以不同太灵活
通用工具,功能应该大众化,数据的变化会比较多
数据库类以后凡是要操作数据库的地方都可以用得到,很多项目都会用到,所以应该是个通用类工具,因此要考虑其到处可用的特性,让其能够灵活。
4.数据库的错操最基本的特性不会改变,即需要连接认证 而连接认证的信息是灵活的,所以可以通过设定属性来控制,这些信息也都是不同使用这不同的
应该可以改变,所以可以通过__construct来实现数据传入
<?php //数据库操作类 class Sql{ //设置属性 public $host; public $user; public $pwd; public $port; public $dbname; public $charset; //构造方法初始化数据,数据较多,应该使用数组来传递数据,关联数组,而绝大部分的开发者本意是用来测试, //所以基本都是本地,因此可以给默认数据 public function __construct(array $info=array()) { //这里的??表示为 $a=$c??$b 等同于 $a=isset($c)?$c:$b; 如果变量c存在就等于c否则等于b $this->host=$info[‘host‘]??‘localhost‘; $this->user=$info[‘user‘]??‘root‘; $this->pwd=$info[‘pwd‘]??‘root‘; $this->port=$info[‘port‘]??‘3306‘; $this->dbname=$info[‘dbname‘]??‘t1‘; $this->charset=$info[‘charset‘]??‘utf8‘; } } $info =array(0=>‘sdfsdf‘,1=>‘sdf‘,2=>‘sdfsdf‘); print_r($info); ?>
注意:方法设定的原则是一个方法只实现一个简单的功能,不要多个功能堆积到一个方法中。
5.数据库属性会在实例化sql对象的时候自动初始化