构造函数(__construct)
本课属于 Coddy PHP 学习旅程的“面向对象编程”单元。第 7 课,共 91 课。
__construct 方法是一种特殊方法,在你创建新对象时会自动运行。它会初始化对象的属性。
下面是一个带有构造函数的类的示例:
<?php
class Dog {
public $name;
public $breed;
public function __construct($name, $breed) {
$this->name = $name;
$this->breed = $breed;
}
}__construct 方法接收参数,并使用 $this 将它们赋给属性。
使用构造函数创建对象:
$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");当你调用 new Dog("Rex", "German Shepherd") 时,PHP 会自动调用 __construct 并传入参数。
访问由构造函数设置的属性:
echo $rex->name . "\n";
echo $rex->breed . "\n";
echo $buddy->name . "\n";
echo $buddy->breed . "\n";输出:
Rex
German Shepherd
Buddy
Golden Retriever你也可以为构造函数设置默认参数值:
class Cat {
public $name;
public $age;
public function __construct($name, $age = 1) {
$this->name = $name;
$this->age = $age;
}
}
$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers"); // age 默认为 1
echo $fluffy->name . " is " . $fluffy->age . " years old\n";
echo $whiskers->name . " is " . $whiskers->age . " years old\n";输出:
Fluffy is 3 years old
Whiskers is 1 years old要点:__construct 方法可确保每个对象在创建时都正确设置好初始数据。这样你就不必在创建对象后手动设置属性。
挑战
简单你需要使用提供的 PHP 文件(book.php 和 driver.php)实现一个图书系统。
你的任务是:
- 在
book.php中完善Book类,并添加一个用于初始化$title、$author和$pages属性的__construct方法 - 在
driver.php中导入并创建一个图书对象,书名为"Harry Potter",作者为"J.K. Rowling",页数为400
按照每个文件中的 TODO 注释操作。
亲手试试
<?php
require_once 'book.php';
// TODO:创建一个 Book 对象,属性如下:
// title:"Harry Potter",author:"J.K. Rowling",pages:400
$myBook = ?;
echo "'" . $myBook->title . "' by " . $myBook->author . ", " . $myBook->pages . " pages\n";
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: PHP 在线编译器