PHP OOP - Đặc điểm
PHP - Đặc điểm là gì?
PHP chỉ hỗ trợ kế thừa đơn: một lớp con chỉ có thể kế thừa từ một lớp cha duy nhất.
Vì vậy, điều gì sẽ xảy ra nếu một lớp cần kế thừa nhiều hành vi? Đặc điểm OOP giải quyết vấn đề này.
Đặc điểm được sử dụng để khai báo các phương thức có thể được sử dụng trong nhiều lớp. Các đặc điểm có thể có các phương thức và phương thức trừu tượng có thể được sử dụng trong nhiều lớp và các phương thức có thể có bất kỳ công cụ sửa đổi quyền truy cập nào (công khai, riêng tư hoặc bảo vệ).
Các đặc điểm được khai báo với trait
từ khóa:
Cú pháp
<?php
trait TraitName {
// some code...
}
?>
Để sử dụng một đặc điểm trong một lớp, hãy sử dụng
use
từ khóa:
Cú pháp
<?php
class MyClass {
use TraitName;
}
?>
Hãy xem một ví dụ:
Thí dụ
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
Giải thích ví dụ
Ở đây, chúng tôi khai báo một đặc điểm: message1. Sau đó, chúng tôi tạo một lớp: Chào mừng. Lớp sử dụng đặc điểm và tất cả các phương thức trong đặc điểm sẽ có sẵn trong lớp.
Nếu các lớp khác cần sử dụng hàm msg1 (), chỉ cần sử dụng đặc điểm message1 trong các lớp đó. Điều này làm giảm sự trùng lặp mã, bởi vì không cần phải khai báo lại cùng một phương thức.
PHP - Sử dụng nhiều đặc điểm
Hãy xem xét một ví dụ khác:
Thí dụ
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
trait message2 {
public function msg2()
{
echo "OOP reduces code duplication!";
}
}
class Welcome {
use message1;
}
class Welcome2 {
use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 =
new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
Giải thích ví dụ
Ở đây, chúng tôi khai báo hai đặc điểm: message1 và message2. Sau đó, chúng tôi tạo hai lớp: Chào mừng và Chào mừng2. Lớp đầu tiên (Welcome) sử dụng đặc điểm message1 và lớp thứ hai (Welcome2) sử dụng cả hai đặc điểm message1 và message2 (nhiều đặc điểm được phân tách bằng dấu phẩy).