1.传统的面向过程和现代面向对象
传统面向过程:是指把将要完成的工作分为若干个步骤一步一步的完成
现代面向对象:是指将要完成的工作拆分为一个一个的对象的任务(功能)每个对象独自完成自己的任务
可以理解为: 一个大扫除 面向过程就是一个人干完大扫除 面向对象就是 一个人扫地 一个人拖地
2.面向对象的基本概念
三大特性:封装 继承 多态
类与对象:
张三是一个对象,李四是一个对象 他们都隶属于人这个类
类:描述某一些具有共同特征的物体的概念
对象:是指一个具体的物体,该物体隶属于某个类别
通常,对象离不开类,没有类就没有对象 没有对象可以有类
class Human{ //定义一个类 class是关键字
//类中有一些属性(就是变量)
var $name = '张三';
var $sex = '男';
var $age = '20';
//类中与一些方法(就是函数)
function show(){
echo '姓名:'.$this->name.';性别:'.$this->sex.';年龄:'.$this->age;
}
const PI = 3.14 //类中有一些常亮(类常亮)
}
类中的属性:
定义形式(var是public的别名):
var $v1; //可以定义不赋值
var $v2 = 2; //定义的同时赋值 值不能是变量和计算表达式
public $v1;
public $2 = 2;
使用形式:
$对象->属性名 //属性名前面没有$符号
创建类的对象:
//调用
1.对象名 = new 类名(Human)();
2.可变类名
变量名($name)= "类"
对象名($lisi) = new 变量名($name)();
3.对象名 = new self;只能在类的内部使用 指的是本身
function cself(){
return new self
}
例如:$lisi = new Human();
$zhangsan = $lisi->cself();
他俩是相等的
4.对象名1 = new 类名() 对象名2 = new 对象名1;
对象的传值:
值传递:复制数据 相互独立
引用传递: 复制的是关系 一个改变另一个也改变
关键字 &;
一般方法:
定义是一样的 使用是
使用也是 ->
访问修饰符 不写就是public
$this 关键字 是一个伪对象 代表当前所属类的当前对象
对象不一样 显示的内容也是不一样的
系统函数:
获取某个对象的 类名 结果只是一个类名字符串
对象名 = new 类名() get_class(对象名)的结果就是类名
静态属性:
关键字 static
static $v1 = 10;
用法:类::属性名;
静态方法:
不能存在$this 不能存在类的东西
构造方法:
关键字 __construct();
如果你不写 就是调用 function ____construct(){
}
不能是静态方法
使用$this来赋值
析构方法:
销毁对象时自动调用 php代码执行结束会自动销毁对象 可用析构方法查看
不能调用 自己执行 不能有形参
手动销毁unset($p1);