一、面向过程和面向对象
1.面向过程:是一种以过程(步骤)为中心的编程思想。
2.面向对象:就是把构成问题的事物分解成各个对象,建立对象的目的并不是为了完成某一个步骤,而是为了描述了某个事物在解决问题过程中的行为。
3.区别:
面向过程事物比较简单,可以用线性的 ,思维去解决
面向对象事物比较复杂,使用简单的线性,思维无法解决
4.共同点:
面向过程和对象都是解决实际问题的一种思维方式 二者相辅相成,并不是对立的。
二、面向对象之三大特性
1、封装性
封装就是把抽取出来的数据和对数据的操作封装在一起,数据被保护在操作的内部,
程序的其他部分只有被授权的操作(方法)才能对数据进行操作
php提供了三种访问控制修饰符
public 表示全局,本类内部,类外部,子类都可以访问
protected 表示受保护的,只有本类或子类可以访问
private 表示私有的,只有本类内部可以访问
以上三种修饰符既可以修饰方法也可以修饰属性(变量),方法如果没有访问修饰符则默认是public,成员属性必须指定访问修饰符。
2、继承性
子类自动继承一个或多个父类中的属性与方法,并可以重写或者添加新的属性或方法。
这个特性简化了类和对象的创建,提高了代码的可重用性。
3、多态性
可以理解为多种表现形式,即“一个对外接口(方法),多个内部实现”。
在面向对象的理论中,多态性的一般定义为:同一个操作(函数)作用于不同的类的实例,将产生不同的执行结果。也即不同类的对象收到相同的消息时,将会得到不同的结果。
三、类的封装
类中由两部分组成:成员属性和成员方法
一个类可以产生千千万万个对象,类是抽象的,几乎不占内存,而对象是具体的,占用存储空间。
<?php
class Db
{
//成员属性
public $sno;
public $name;
//成员方法
public function student()
{
echo $this->sno;
}
}
//实例化对象
$stu1=new Db(‘1234’,‘张三’);
//执行方法
$stu1->student();
new是实例化对象的关键字, $this表示当前对象,只有在类的方法中,当访问成员变量(属性)或自己的方法时,才会用到.
->是访问对象的属性,后面的$就不用写了。
四、构造方法和析构方法
构造方法的作用:初始化成员变量(属性)
__construct: 定义构造方法的关键字
定义构造方法时,可以无参数,也可以有参数,或者多个参数。
function __construct($no,$name,$sex,$age)
{
$this->no = $no;
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
析构方法的作用:处理对象善后的工作。当一个对象被销毁是执行。遵循先进后出的原则。
function __destruct()
{
echo '析构方法 ';
}
五、封装类
class DB{
//
private $conn;
//链接数据库
function __construct($dbname, $usr, $pwd, $host = "127.0.0.1", $port = 3306, $coding = 'utf8')
{
//建议使用mysqli,连接mysql数据库
$conn = mysqli_connect($host, $usr, $pwd, $dbname, $port);
if (mysqli_connect_errno($conn)) {
echo "连接数据库失败: " . mysqli_connect_error();
}
// 设置数据库连接字符集
mysqli_set_charset($conn, $coding);
$this->conn = $conn;
echo '连接数据库成功';
}
private $conn;为什么会是私有型,这句代码起什么作用?
因为会使用到$conn,所以会把它设置成属性,私有型只能在本类中使用。
$host = “127.0.0.1”, $port = 3306, $coding = ‘utf8’ 这三个是带默认的参数,要把它们放在后面。
六、用到的函数
mysqli_connect_erron()函数返回链接错误的错误代码,返回值:返回错误代码值,如果没有错误发生则返回0.
mysqli_connect_error()函数返回链接错误的错误描述,返回值:返回一个描述错误的字符串。如果没有错误则返回null.
mysqli_set_charset()函数规定当与数据库服务器进行数据传送时要使用的默认字符集的问题。返回值成功为TRUE失败为FALSE
require_once()执行一遍指定文件,它与require()的区别在于前者一旦加载过,就不会再执行。