Menu
CoddyTech

属性

本课属于 Coddy PHP 学习旅程的“面向对象编程”单元。第 6 课,共 91 课。

属性是属于类的变量。它们用于存储对象状态的信息。在 PHP 中,必须在类内部使用 public 这样的可见性关键字声明属性。

属性可以有默认值:每个新对象都会使用相同的初始值,但每个对象都保留自己的独立副本:

<?php
class Student {
    public $school = "PHP Academy";  // 默认值
    public $name;
    public $age;
}

没有默认值的属性在设置之前初始值为 null。

你可以使用方法和 $this 设置属性值:

class Student {
    public $school = "PHP Academy";
    public $name;
    public $age;

    public function setInfo($name, $age) {
        $this->name = $name;    // 设置实例数据
        $this->age = $age;      // 设置实例数据
    }
}

创建学生对象,并设置各自的数据:

$student1 = new Student();
$student2 = new Student();

$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);

访问这些属性:

echo $student1->name . "\n";          // Alice
echo $student2->name . "\n";          // Bob
echo $student1->school . "\n";        // PHP Academy
echo $student2->school . "\n";        // PHP Academy

输出:

Alice
Bob
PHP Academy
PHP Academy

关键区别:具有默认值的属性(如 $school)在每个对象中都以相同的值开始。通过方法设置的属性(如 $name 和 $age)则是每个对象独有的。

challenge icon

挑战

简单

在 student.php 中补全 Student 类:

  1. 声明属性 $school,默认值为 "PHP Academy"
  2. 声明属性 $name 和 $age(不设置默认值)
  3. 添加一个 setInfo 方法,接收 $name 和 $age 参数,并使用 $this 设置它们

driver.php 文件会通过创建两个学生并打印他们的信息来测试你的类。

亲手试试

<?php
require_once 'student.php';

$student1 = new Student();
$student2 = new Student();

$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);

echo $student1->name . " is " . $student1->age . " at " . $student1->school . "\n";
echo $student2->name . " is " . $student2->age . " at " . $student2->school . "\n";
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: PHP 在线编译器