PHP - 类与对象

欢迎,有抱负的程序员们!今天,我们将深入PHP类和对象的精彩世界。不要担心这些术语听起来有点吓人——在本课结束时,你将能够像专业人士一样创建自己的类和对象!

PHP - Classes and Objects

类和对象是什么?

在我们跳入代码之前,让我们先了解类和对象是什么。想象你正在建造一座房子。类就像是房子的蓝图,而对象就是根据这个蓝图建造的实际房子。你可以从单一的蓝图创建许多房子(对象)。

在PHP中定义一个类

让我们开始创建我们的第一个PHP类。我们将创建一个简单的Car类。

<?php
class Car {
// 类属性
public $brand;
public $color;

// 类方法
public function startEngine() {
return "Vroom! The $this->color $this->brand is starting.";
}
}
?>

让我们分解一下:

  1. 我们以class关键字开始,后面跟着我们类的名称(在这个例子中是Car)。
  2. 在类内部,我们定义了属性(变量),如$brand$color
  3. 我们还定义了一个名为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.

这里发生了什么:

  1. 我们使用new关键字从我们的Car类创建对象。
  2. 我们使用箭头(->)操作符设置每个对象的属性。
  3. 我们在每个对象上调用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();
?>

构造函数允许我们在创建对象时设置brandcolor,使我们的代码更干净、更高效。

继承

面向对象编程的一个强大特性是继承。它允许我们基于一个现有的类创建一个新的类。让我们创建一个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