Sử dụng giao diện trong PHP

Tại sao bạn cần một giao diện, nếu đã có các lớp trừu tượng?

Một trong những vấn đề như vậy

"Vấn đề kim cương" [đôi khi được gọi là "vấn đề kim cương chết người"] là một sự nhập nhằng phát sinh khi hai lớp B và C kế thừa từ A và lớp D kế thừa từ cả B và C. Nếu có một phương thức trong A mà B và C đã ghi đè và D không ghi đè lên phương thức đó thì D sẽ kế thừa phiên bản nào của phương thức đó. của B hay của C?

Nguồn.

Tại sao/Khi nào nên sử dụng một giao diện? . Tất cả các xe ô tô trên thế giới đều có cùng một giao diện [phương thức]. AccelerationPedalIsOnTheRight[], BrakePedalISOnTheLeft[]. Hãy tưởng tượng rằng mỗi thương hiệu xe hơi sẽ có những "phương pháp" khác với thương hiệu khác. BMW sẽ có Phanh ở bên phải và Honda sẽ có phanh ở bên trái bánh xe. Mọi người sẽ phải tìm hiểu cách thức hoạt động của những "phương pháp" này mỗi khi họ mua một nhãn hiệu ô tô khác. Đó là lý do tại sao nên có cùng một giao diện ở nhiều "nơi. "

Một giao diện làm gì cho bạn [tại sao một người nào đó thậm chí sẽ sử dụng một giao diện]?

// Methods inside this interface must be implemented in all classes which implement this interface.
interface IPersonService
{   
    public function Create[$personObject];
}

class MySqlPerson implements IPersonService
{
    public function Create[$personObject]
    {
        // Create a new person in MySql database.
    }
}

class MongoPerson implements IPersonService
{
    public function Create[$personObject]
    {
        // Mongo database creates a new person differently then MySQL does. But the code outside of this method doesn't care how a person will be added to the database, all it has to know is that the method Create[] has 1 parameter [the person object].
    }
}

Bằng cách này, phương thức Create[] sẽ luôn được sử dụng theo cùng một cách. Không thành vấn đề nếu chúng ta đang sử dụng lớp MySqlPerson hoặc lớp MongoPerson. Cách chúng ta đang sử dụng một phương thức vẫn giữ nguyên [giao diện vẫn giữ nguyên]

Ví dụ: nó sẽ được sử dụng như thế này [ở mọi nơi trong mã của chúng tôi]

new MySqlPerson[]->Create[$personObject];
new MongoPerson[]->Create[$personObject];

Bằng cách này, một cái gì đó như thế này không thể xảy ra

new MySqlPerson[]->Create[$personObject]
new MongoPerson[]->Create[$personsName, $personsAge];

Việc nhớ một giao diện và sử dụng cùng một giao diện ở mọi nơi sẽ dễ dàng hơn nhiều so với nhiều giao diện khác nhau

Bằng cách này, phần bên trong của phương thức Create[] có thể khác nhau đối với các lớp khác nhau mà không ảnh hưởng đến mã "bên ngoài", gọi phương thức này. Tất cả mã bên ngoài phải biết là phương thức Create[] có 1 tham số [

new MySqlPerson[]->Create[$personObject];
new MongoPerson[]->Create[$personObject];
0], bởi vì đó là cách mã bên ngoài sẽ sử dụng/gọi phương thức. Mã bên ngoài không quan tâm đến những gì đang xảy ra bên trong phương thức;

Bạn cũng có thể làm điều này mà không cần giao diện, nhưng nếu bạn sử dụng giao diện thì sẽ "an toàn" hơn [vì nó ngăn bạn mắc lỗi]. Giao diện đảm bảo với bạn rằng phương thức Create[] sẽ có cùng chữ ký [cùng loại và cùng số lượng tham số] trong tất cả các lớp triển khai giao diện. Bằng cách này, bạn có thể chắc chắn rằng BẤT KỲ lớp nào triển khai giao diện

new MySqlPerson[]->Create[$personObject];
new MongoPerson[]->Create[$personObject];
2, sẽ có phương thức Create[] [trong ví dụ này] và sẽ chỉ cần 1 tham số [
new MySqlPerson[]->Create[$personObject];
new MongoPerson[]->Create[$personObject];
0] để được gọi/sử dụng

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về giao diện PHP và cách sử dụng giao diện để xác định hợp đồng giữa các lớp

Giới thiệu về giao diện PHP

Một giao diện cho phép bạn chỉ định một hợp đồng mà một lớp phải thực hiện. Để xác định giao diện, bạn sử dụng từ khóa

Chủ Đề