OOP 即 Object Oriented Programming
1、面向过程开发方式的缺点
1)代码的重用性太低(函数)
2)代码的扩展性太低(高内聚低耦合)
3)代码的升级困难
2、区别
面向对象编程:关心的是你去做什么(人->(吃饭,运动,睡觉))
面向过程编程:关心的是怎么去做(人->买菜->做饭->吃饭)
3、面向对象三大特点
1)继承性:代码重用
2)封装性:对相似数据和操作进行封装,保证代码安全和重用
3)多态性:覆盖和重载
4、关键词
类(class):相似的数据和数据操作的封装
成员量(修饰词+名称):修饰(public/protected/private)+普通的变/常量
成员方法(修饰词+方法名):修饰(public/protected/private)+方法
实例化(new):类创建对象的过程
对象(object):类的特例/实例
5、类的创建
1)创建类Human
<?php
/**
* 创建一个Human类
*/
class Human{
public $name; // 成员变量 名字
public $age; // 成员变量 年龄
public function run(){ // 成员方法 跑
}
}
?>
规范:1)类名只能使用字母,下划线开头,不能以数字开头
2)类名不能使用关键字
3)类名不区分大小写,最好使用驼峰写法(userModel...)
4) 类名、成员变量、成员方法名一定要有意义(可读性)
2)实例化类:
对象变量 = new 类名;
对象变量 = new 类名();
对象变量:普通的变量,类型为对象类型
$object = new Human; //实例化Human类 $object为对象型变量
$object = new Human();
3)类的使用:
is_object():判断变量是否是对象类型
instanceof:判断某个变量是否是某个类的实例化
$object instanceof Human //判断$object是否是Human类的实例化 返回1/0
6、成员变量
修饰符 变量名[=值];
类外调用:对象名->变量名(无$);
类内调用:$this->变量名(无$);
$this:对象本身;
7、成员方法
修饰符 function 方法名(参数){
...
返回值
}
类外调用:对象->方法名(实参列表);
类内调用:$this->方法名(实参列表);
8、类常量
Const 大写常量名 = 值;
Const HOST = “localhost”;
类外调用: 类名::常量名;
类内调用: self::常量名;
:: -> 作用域操作符
9、魔术方法
定义:用户对类执行了某操作后,系统自动调用的一系列方法
1)__construct(): //构造方法
功能:初始化对象时,所必须的数据(成员变量)和操作(成员方法)
调用时间:1)分配类对象所必须的变量空间
2)调用构造函数
3)初始化数据
注意:1)如果类中无构造函数,系统会自动调用一个空的构造函数
2)方法名和类名相同,就默认是一个构造函数
3)如果__construct()和 Class()同名方法同时存在,优先调用前者,后者失效
4)构造函数内不允许有返回值
2)__destruct()://析构方法
功能:对象销毁时,销毁一些不必要的变量;
系统出错时,销毁数据和错误检查,清理一些占用的资源
销毁对象:1-人工销毁对象:对象=null;
unset(对象);
2-系统销毁:系统会在页面加载完毕后,不使用该对象时,自动销毁