面向对象编程(Object-Oriented Programming,OOP)是一种编程思想,它通过 类(Class) 和 对象(Object) 来组织代码,可以让程序更加模块化、可扩展、易维护。
核心概念
概念 | 简介 |
---|---|
类(Class) | 一种模板,定义对象的属性和行为 |
对象(Object) | 类的实例,实际存在的个体 |
属性(Property) | 类中定义的变量,表示对象的特征 |
方法(Method) | 类中定义的函数,表示对象的行为 |
什么是类?
类就像是蓝图,或者可以理解为“设计图”。比如:你去买一辆车,‘车’这个概念就是一个类。车的设计图会告诉你:车需要有轮子、方向盘、油门,这些“定义”就是类。
类 = 设计图,模板。
PHP 中类的写法
classCar {public$brand; // 品牌public$color; // 颜色public$speed; // 速度// 构造函数,创建对象时自动调用publicfunction__construct($brand, $color, $speed) {$this->brand=$brand;$this->color=$color;$this->speed=$speed; }// 方法:启动publicfunctionstart() {echo$this->brand . "启动了,颜色是 " . $this->color . "<br>"; }// 方法:加速publicfunctionaccelerate() {echo$this->brand . "加速到 " . $this->speed . "km/h<br>"; }}
什么是对象?
对象就是根据设计图造出来的实际东西。继续用买车举例:宝马是一辆车,奔驰也是一辆车,它们都属于‘车’这个类,但是它们是具体的车,这就是对象。
对象 = 实际造出来的产品,实物。
PHP 中对象的写法
$bmw=newBMW("宝马", "黑色", 220);$benz=newBenz("奔驰", "白色", 200);
什么是属性?
属性就是对象的特征,具体的描述信息。比如:宝马这辆车的颜色是黑色、奔驰这辆车的速度是 220km/h;这些“颜色”、“速度”就是属性。它描述了这辆车“是什么样的”。
属性 = 对象的特点。
在 PHP 里像这样写:
public$brand; // 品牌public$color; // 颜色public$speed; // 速度
属性的访问控制
关键字 public、private、protected(在继承中会进一步说明)
-
public(公有):公有的类成员可以在任何地方被访问。
-
protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问(咱家的)。
-
private(私有):私有的类成员则只能被其定义所在的类访问(自己的)。
什么是方法?
方法就是对象能做的事情,或者说功能。比如:车可以加速(功能)、车可以刹车(功能);这些“加速”、“刹车”就是方法。
方法 = 对象的行为,能干什么。
PHP 方法示例
public function start() {echo$this->brand . "启动了,颜色是 " . $this->color . "<br>";}// 方法:加速public function accelerate() {echo$this->brand . "加速到 " . $this->speed . "km/h<br>";}
方法的调用
在 PHP 面向对象编程中,对象方法的调用语法:
$对象名->方法名();
以上面的类为例子:
classCar {publicfunctiondrive() {echo"汽车正在行驶<br>"; }}$car=newCar(); // 创建对象$car->drive(); // 调用对象的方法
__construct
构造函数
-
构造函数是一种特殊的方法,在创建一个新对象时,它会被自动调用。
-
它可以用来 初始化 对象的属性或执行其他必要的操作
-
没有返回值
下面是Car类中的构造函数:
publicfunction__construct($brand, $color, $speed) {$this->brand=$brand;$this->color=$color;$this->speed=$speed; }
因为构造函数带有参数,所以我们在创建对象的时候就可以直接传入值。
$bmw=newCar("宝马", "黑色", 220);
此时bmw对象创建成功后构造函数自动调用,其属性也就自动赋值。
__destruct
析构函数
-
析构函数是一种特殊的方法,它在对象被销毁时自动调用
-
它可以用来执行一些清理操作,例如释放资源或关闭数据库连接。
-
当对象不再被引用或脚本执行结束时,析构函数会被自动调用
对象自身引用$this
它指代的是当前正在执行代码的那个对象本身,用来访问对象的属性和方法。
static 静态变量 和 self
static静态变量/方法 属于类本身,而不是某个对象,不需要实例化对象,也可以访问静态成员,静态变量在类的所有实例间共享。
self
关键字
self
指代 当前类(不是对象),访问类的静态成员(属性或方法)时用 self::
,不能用来访问实例属性或实例方法。
classTest {
publicstatic$name="PHP";
publicstaticfunctionsay() {
echo"Hello from " . self::$name;
}
}
Test::say(); // 输出 Hello from PHP
类常量
静态属性与类常量相似,唯一的区分是类常量不可以更改,静态属性可以更改使用场景:所有的对象共用一个属性
constNAME="Fengling";
echoself::MAOSHU;
0x0 每日资源分享【PHP项目实战教程】
原文始发于微信公众号(风铃情报站):php基础-面向对象
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论