PHP - 类与对象
欢迎,有抱负的程序员们!今天,我们将深入PHP类和对象的精彩世界。不要担心这些术语听起来有点吓人——在本课结束时,你将能够像专业人士一样创建自己的类和对象!
类和对象是什么?
在我们跳入代码之前,让我们先了解类和对象是什么。想象你正在建造一座房子。类就像是房子的蓝图,而对象就是根据这个蓝图建造的实际房子。你可以从单一的蓝图创建许多房子(对象)。
在PHP中定义一个类
让我们开始创建我们的第一个PHP类。我们将创建一个简单的Car
类。
<?php
class Car {
// 类属性
public $brand;
public $color;
// 类方法
public function startEngine() {
return "Vroom! The $this->color $this->brand is starting.";
}
}
?>
让我们分解一下:
- 我们以
class
关键字开始,后面跟着我们类的名称(在这个例子中是Car
)。 - 在类内部,我们定义了属性(变量),如
$brand
和$color
。 - 我们还定义了一个名为
startEngine()
的方法(函数)。
从类创建对象
现在我们有了Car
类,让我们创建一些汽车对象!
<?php
// 创建汽车对象
$myCar = new Car();
$myCar->brand = "Toyota";
$myCar->color = "Red";
$friendsCar = new Car();
$friendsCar->brand = "Honda";
$friendsCar->color = "Blue";
// 使用对象的方法
echo $myCar->startEngine();
echo $friendsCar->startEngine();
?>
输出:
Vroom! The Red Toyota is starting.
Vroom! The Blue Honda is starting.
这里发生了什么:
- 我们使用
new
关键字从我们的Car
类创建对象。 - 我们使用箭头(
->
)操作符设置每个对象的属性。 - 我们在每个对象上调用
startEngine()
方法。
构造函数方法
现在,让我们通过添加一个构造函数使我们的类更高级一些。构造函数是一个在创建对象时调用的特殊方法。
<?php
class Car {
public $brand;
public $color;
// 构造函数
public function __construct($brand, $color) {
$this->brand = $brand;
$this->color = $color;
}
public function startEngine() {
return "Vroom! The $this->color $this->brand is starting.";
}
}
// 使用构造函数创建汽车对象
$myCar = new Car("Toyota", "Red");
$friendsCar = new Car("Honda", "Blue");
echo $myCar->startEngine();
echo $friendsCar->startEngine();
?>
构造函数允许我们在创建对象时设置brand
和color
,使我们的代码更干净、更高效。
继承
面向对象编程的一个强大特性是继承。它允许我们基于一个现有的类创建一个新的类。让我们创建一个ElectricCar
类,它继承自我们的Car
类。
<?php
class ElectricCar extends Car {
public $batteryLife;
public function __construct($brand, $color, $batteryLife) {
parent::__construct($brand, $color);
$this->batteryLife = $batteryLife;
}
public function chargeBattery() {
return "The $this->color $this->brand is charging. Current battery life: $this->batteryLife%";
}
}
$teslaModel3 = new ElectricCar("Tesla", "White", 80);
echo $teslaModel3->startEngine();
echo $teslaModel3->chargeBattery();
?>
输出:
Vroom! The White Tesla is starting.
The White Tesla is charging. Current battery life: 80%
在这里,ElectricCar
继承了Car
的所有属性和方法,并添加了自己的属性($batteryLife
)和方法(chargeBattery()
)。
访问修饰符
在面向对象编程中,我们可以使用访问修饰符控制属性和方法的可见性。有三种类型:
修饰符 | 描述 |
---|---|
public | 从任何地方都可以访问 |
protected | 在类内部和派生类中可以访问 |
private | 只在类内部可以访问 |
让我们修改我们的Car
类来使用这些:
<?php
class Car {
protected $brand;
private $engineStarted = false;
public function __construct($brand) {
$this->brand = $brand;
}
public function startEngine() {
$this->engineStarted = true;
return "The $this->brand's engine is now running.";
}
public function isEngineRunning() {
return $this->engineStarted;
}
}
$myCar = new Car("Toyota");
echo $myCar->startEngine();
echo $myCar->isEngineRunning() ? "Engine is running" : "Engine is off";
// 这将导致错误: echo $myCar->engineStarted;
?>
现在,$brand
是受保护的(在子类中可访问),$engineStarted
是私有的(只在Car
类中可访问),我们的方法保持为公共的。
结论
恭喜你!你已经迈出了进入PHP面向对象编程世界的第一步。我们涵盖了类、对象、构造函数、继承和访问修饰符。这些概念构成了OOP的基础,并将为你继续编程之旅提供良好的服务。
记住,熟能生巧。尝试创建你自己的类,尝试不同的属性和方法,不要害怕犯错误——这是我们学习的方式!快乐编码!
Credits: Image by storyset