面向对象基础----封装数据库操作类

思考:现在掌握了很多面向对象相关的内容,但是什么时候封装类?怎么封装?如果使用类成员?

引入:其实类的封装没有多么复杂,但是需要一个熟练的过程来确定哪些东西可以放到类里,该用什么样的形式等。我们通过封装一个数据库的操作来综合练习下

封装数据库类 掌握

定义:封装数据库操作类,即根据数据库的操作需求,来确认数据库操作类该有什么样的功能,以及这些功能该如何实现。

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对象的时候自动初始化