PHP OOP - Giao diện
PHP - Giao diện là gì?
Các giao diện cho phép bạn chỉ định các phương thức mà một lớp sẽ triển khai.
Các giao diện giúp bạn dễ dàng sử dụng nhiều lớp khác nhau theo cùng một cách. Khi một hoặc nhiều lớp sử dụng cùng một giao diện, nó được gọi là "đa hình".
Các giao diện được khai báo với interface
từ khóa:
Cú pháp
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function
someMethod3() : string;
}
?>
PHP - Giao diện so với Lớp trừu tượng
Giao diện tương tự như các lớp trừu tượng. Sự khác biệt giữa các giao diện và các lớp trừu tượng là:
- Các giao diện không thể có thuộc tính, trong khi các lớp trừu tượng có thể
- Tất cả các phương thức giao diện phải là công khai, trong khi các phương thức lớp trừu tượng là công khai hoặc được bảo vệ
- Tất cả các phương thức trong một giao diện là trừu tượng, vì vậy chúng không thể được triển khai trong mã và từ khóa trừu tượng là không cần thiết
- Các lớp có thể triển khai một giao diện đồng thời kế thừa từ một lớp khác
PHP - Sử dụng giao diện
Để triển khai một giao diện, một lớp phải sử dụng implements
từ khóa.
Một lớp triển khai một giao diện phải triển khai tất cả các phương thức của giao diện.
Thí dụ
<?php
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
$animal = new Cat();
$animal->makeSound();
?>
Từ ví dụ trên, giả sử rằng chúng tôi muốn viết phần mềm quản lý một nhóm động vật. Có những hành động mà tất cả các loài động vật có thể làm, nhưng mỗi loài động vật làm theo cách riêng của mình.
Sử dụng các giao diện, chúng ta có thể viết một số mã có thể hoạt động cho tất cả các loài động vật ngay cả khi mỗi con vật cư xử khác nhau:
Thí dụ
<?php
// Interface definition
interface Animal {
public
function makeSound();
}
// Class definitions
class Cat
implements Animal {
public function makeSound() {
echo " Meow ";
}
}
class Dog implements Animal {
public function makeSound()
{
echo " Bark ";
}
}
class Mouse implements Animal {
public function makeSound() {
echo " Squeak ";
}
}
// Create a list
of animals
$cat = new Cat();
$dog = new Dog();
$mouse = new
Mouse();
$animals = array($cat, $dog, $mouse);
// Tell the animals
to make a sound
foreach($animals as $animal) {
$animal->makeSound();
}
?>
Giải thích ví dụ
Cat, Dog và Mouse là tất cả các lớp triển khai giao diện Động vật, có nghĩa là tất cả chúng đều có thể tạo ra âm thanh bằng cách sử dụng makeSound()
phương thức này. Do đó, chúng ta có thể lặp lại tất cả các loài động vật và bảo chúng phát ra âm thanh ngay cả khi chúng ta không biết từng loại động vật đó là gì.
Vì giao diện không cho các lớp biết cách triển khai phương thức, nên mỗi con vật có thể phát ra âm thanh theo cách riêng của nó.