Menu
CoddyTech

Hàm khởi tạo (__construct)

Thuộc phần Lập trình hướng đối tượng trong hành trình PHP của Coddy. Bài học 7 trên 91.

Phương thức __construct là một phương thức đặc biệt, tự động chạy khi bạn tạo một đối tượng mới. Phương thức này khởi tạo các thuộc tính của đối tượng.

Đây là ví dụ về một lớp có hàm khởi tạo:

<?php
class Dog {
    public $name;
    public $breed;

    public function __construct($name, $breed) {
        $this->name = $name;
        $this->breed = $breed;
    }
}

Phương thức (method) __construct nhận các tham số (parameter) và gán chúng cho các thuộc tính (property) bằng $this.

Tạo các đối tượng bằng hàm khởi tạo:

$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");

Khi bạn gọi new Dog("Rex", "German Shepherd"), PHP tự động gọi __construct và truyền các đối số.

Truy cập các thuộc tính mà hàm khởi tạo đã thiết lập:

echo $rex->name . "\n";
echo $rex->breed . "\n";
echo $buddy->name . "\n";
echo $buddy->breed . "\n";

Đầu ra:

Rex
German Shepherd
Buddy
Golden Retriever

Bạn cũng có thể tạo hàm khởi tạo với các giá trị tham số mặc định:

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 mặc định là 1

echo $fluffy->name . " is " . $fluffy->age . " years old\n";
echo $whiskers->name . " is " . $whiskers->age . " years old\n";

Đầu ra:

Fluffy is 3 years old
Whiskers is 1 years old

Ý chính: Phương thức __construct đảm bảo mỗi đối tượng được thiết lập đầy đủ với dữ liệu ban đầu khi được tạo. Nhờ đó, bạn không cần tự thiết lập các thuộc tính sau khi tạo đối tượng.

challenge icon

Thử thách

Dễ

Bạn được cung cấp các tệp PHP (book.php và driver.php) để triển khai một hệ thống quản lý sách.

Nhiệm vụ của bạn:

  • Hoàn thiện lớp Book trong book.php bằng một phương thức __construct khởi tạo các thuộc tính $title, $author và $pages
  • Trong driver.php, nhập và tạo một đối tượng sách có tên "Harry Potter", do "J.K. Rowling" viết, với 400 trang

Làm theo các chú thích TODO trong từng tệp.

Tự làm thử

<?php
require_once 'book.php';

// TODO: Tạo một đối tượng Book với các thuộc tính sau:
// title: "Harry Potter", author: "J.K. Rowling", pages: 400
$myBook = ?;

echo "'" . $myBook->title . "' by " . $myBook->author . ", " . $myBook->pages . " pages\n";
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch PHP online