Thuộc tính
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 6 trên 91.
Thuộc tính là các biến thuộc về một lớp. Chúng lưu trữ thông tin về trạng thái của đối tượng. Trong PHP, bạn phải khai báo thuộc tính bên trong lớp bằng một từ khóa chỉ định phạm vi truy cập như public.
Thuộc tính có thể có giá trị mặc định: mỗi đối tượng mới bắt đầu với cùng một giá trị ban đầu, nhưng mỗi đối tượng giữ bản sao riêng, độc lập:
<?php
class Student {
public $school = "PHP Academy"; // giá trị mặc định
public $name;
public $age;
}Các thuộc tính không có giá trị mặc định sẽ bắt đầu là null cho đến khi bạn đặt giá trị cho chúng.
Bạn có thể đặt giá trị thuộc tính bằng một phương thức và $this:
class Student {
public $school = "PHP Academy";
public $name;
public $age;
public function setInfo($name, $age) {
$this->name = $name; // thiết lập dữ liệu cho instance
$this->age = $age; // thiết lập dữ liệu cho instance
}
}Tạo các đối tượng học sinh và thiết lập dữ liệu riêng cho từng đối tượng:
$student1 = new Student();
$student2 = new Student();
$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);Truy cập các thuộc tính:
echo $student1->name . "\n"; // Alice
echo $student2->name . "\n"; // Bob
echo $student1->school . "\n"; // PHP Academy
echo $student2->school . "\n"; // PHP AcademyĐầu ra:
Alice
Bob
PHP Academy
PHP AcademyĐiểm khác biệt chính: Các thuộc tính có giá trị mặc định (như $school) bắt đầu với cùng một giá trị ở mọi đối tượng. Các thuộc tính được đặt thông qua phương thức (như $name và $age) là riêng của từng đối tượng.
Thử thách
DễHoàn thiện lớp Student trong tệp student.php:
- Khai báo thuộc tính
$schoolvới giá trị mặc định"PHP Academy" - Khai báo các thuộc tính
$namevà$age(không có giá trị mặc định) - Thêm phương thức
setInfonhận các tham số$namevà$age, rồi gán chúng bằng$this
Tệp driver.php sẽ kiểm tra lớp của bạn bằng cách tạo hai học sinh và in ra thông tin của họ.
Tự làm thử
<?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";
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