Menu
CoddyTech

构造函数(__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 方法可确保每个对象在创建时都正确设置好初始数据。这样你就不必在创建对象后手动设置属性。

challenge icon

挑战

简单

你需要使用提供的 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";
quiz icon自我测试

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

面向对象编程中的所有课

自己练习: PHP 在线编译器