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 RetrieverBạ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.
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
Booktrongbook.phpbằng một phương thức__constructkhởi tạo các thuộc tính$title,$authorvà$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ới400trang
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";
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
1Nền tảng về OOP
Tệp bên ngoàiGiới thiệu về OOPLớp và đối tượngTừ khóa $thisPhương thứcThuộc tínhHàm khởi tạo (__construct)Hàm hủy (__destruct)Ôn tập: máy tính đơn giản4Kế thừa
Kế thừa cơ bảnTừ khóa parent::Ghi đè phương thứcTừ khóa finalLớp trừu tượngÔn tập: hệ thống phân cấp nhân viên7Đóng gói
Công khai, được bảo vệ, riêng tưTìm hiểu sâu về bộ điều chỉnh quyền truy cậpGetter và setterẨn thông tinRút gọn hàm khởi tạo (8.0)Ôn tập: hệ thống hồ sơ học sinh2Không gian tên và tự động nạp
Giới thiệu về không gian tênTừ khóa useChuẩn tự động nạp PSR-4Trình tự động nạp của ComposerÔn tập: dự án có tổ chức5Giao diện và hợp đồng
Giới thiệu về giao diệnTriển khai giao diệnTriển khai nhiều giao diệnGiao diện và lớp trừu tượngGợi ý kiểu với giao diệnÔn tập: Máy tính hình học8Phương thức ma thuật
Giới thiệu về phương thức ma thuật__toString và __debugInfo__get, __set, __isset, __unset__call và __callStatic__clone và sao chép đối tượng__serialize và __unserializeÔn tập: Bộ sưu tập tùy chỉnh3Thuộc tính của lớp
Thuộc tính instance và staticHằng số trong lớpPhương thức và thuộc tính staticThuộc tính private và protectedThuộc tính chỉ đọc (PHP 8.1)Ôn tập: Trình quản lý tài khoản ngân hàng6Đa hình
Xem lại việc ghi đè phương thứcĐa hình qua giao diệnGợi ý kiểu và kiểu hợpLiên kết tĩnh muộnÔn tập: bộ xử lý thanh toánTự luyện tập: Trình biên dịch PHP online