属性
本课属于 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)则是每个对象独有的。
挑战
简单在 student.php 中补全 Student 类:
- 声明属性
$school,默认值为"PHP Academy" - 声明属性
$name和$age(不设置默认值) - 添加一个
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";
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: PHP 在线编译器