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ậ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ác đặ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 truy cập nào (công khai, riêng tư hoặc được bảo vệ).
Đặc điểm được khai báo bằng từ khóa trait
:
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 từ khóa use
:
Cú pháp
<?php
class MyClass {
use TraitName;
}
?>
Hãy xem một ví dụ:
Ví dụ
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
Hãy tự mình thử »Ví dụ giải thích
Ở đây, chúng tôi khai báo một đặc điểm: message1. Sau đó, chúng ta 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(), bạn 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ã 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 một ví dụ khác:
Ví 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();
?>
Hãy tự mình thử »Ví dụ giải thích
Ở đây, chúng ta khai báo hai đặc điểm: message1 và message2. Sau đó, chúng ta tạo hai lớp: Welcome và Welcome2. Lớp đầu tiên (Chào mừng) sử dụng đặc điểm message1 và lớp thứ hai (Chào mừng2) sử dụng cả đặc điểm message1 và message2 (nhiều đặc điểm được phân tách bằng dấu phẩy).