PHP OOP - 类和对象
类是对象的模板,对象是类的实例。
OOP 案例
假设我们有一个名为 Fruit 的类。一个 Fruit 可以有 name、color、weight 等属性。我们可以定义 $name、 $color 和 $weight 等变量来存储这些属性的值。
当创建单个对象(如 apple、banana 等)时,它们会继承类的所有属性和行为,但每个对象在属性上会有不同的值。
定义一个类
类是通过使用 class
关键字定义的,后面跟着类名,然后是一对花括号({})。其所有属性和方法都放在花括号内。
语法
<?php
class Fruit {
// 在此处编写代码...
}
?>
下面我们声明一个名为 Fruit 的类,它包含两个属性($name 和 $color)以及两个方法 set_name() 和 get_name(),用于设置和获取 $name 属性。
<?php
class Fruit {
// 属性
public $name;
public $color;
// 方法
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
注意:在类中,变量称为属性,函数称为方法!
定义对象
没有对象,类就毫无意义!我们可以从一个类创建多个对象。每个对象都拥有类中定义的所有属性和方法,但它们会有不同的属性值。
对象的创建使用 new
关键字。
在下面的示例中,$apple 和 $banana 是 Fruit 类的实例。
示例
<?php
class Fruit {
// 属性
public $name;
public $color;
// 方法
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
自己动手试一试 »
在下面的示例中,我们向 Fruit 类添加了两个方法,用于设置和获取 $color 属性。
示例
<?php
class Fruit {
// 属性
public $name;
public $color;
// 方法
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
自己动手试一试 »
PHP - $this 关键字
$this 关键字指的是当前对象,并且只在方法内部可用。
看下面的例子
示例
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
那么,在哪里可以更改 $name 属性的值呢?有两种方法:
1. 在类内部(通过添加 set_name() 方法并使用 $this)
示例
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
自己动手试一试 »
2. 在类外部(直接更改属性值)
示例
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
自己动手试一试 »
PHP - instanceof
您可以使用 instanceof
关键字来检查一个对象是否属于某个特定类。