Hướng dẫn why we use interface in php - tại sao chúng tôi sử dụng giao diện trong php


PHP - Giao diện là gì?

Giao diện cho phép bạn chỉ định những phương thức nào mà một lớp nên thực hiện.

Các giao diện giúp 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 từ khóa interface:

Cú pháp

interface InterfaceName {
  public function someMethod1();
  public function someMethod2($name, $color);
  public function someMethod3() : string;
}
?>


PHP - Giao diện so với các 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 được công khai, trong khi các phương thức lớp trừu tượng được công khai hoặc được bảo vệ
  • Tất cả các phương thức trong giao diện đều trừu tượng, vì vậy chúng không thể được thực hiện 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 giao diện trong khi kế thừa từ một lớp khác cùng một lúc

PHP - Sử dụng giao diện

Để thực hiện giao diện, một lớp phải sử dụng từ khóa implements.

Một lớp thực hiện giao diện phải thực hiện tất cả các phương thức của giao diện.all of the interface's methods.

Thí dụ

interface Animal {
  public function makeSound();
}

Lớp mèo thực hiện động vật {& nbsp; hàm công khai () {& nbsp; & nbsp; & nbsp; tiếng vang "meow"; & nbsp; }}
  public function makeSound() {
    echo "Meow";
  }
}

$ animal = new Cat (); $ Animal-> makeOund ();?>
$animal->makeSound();
?>

Hãy tự mình thử »

Từ ví dụ trên, hãy nói 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 động vật có thể làm, nhưng mỗi con vật làm điều đó theo cách riêng của nó.

Sử dụng 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 động vật ngay cả khi mỗi con vật cư xử khác nhau:

Thí dụ

// Interface definition
interface Animal {
  public function makeSound();
}

Lớp mèo thực hiện động vật {& nbsp; hàm công khai () {& nbsp; & nbsp; & nbsp; tiếng vang "meow"; & nbsp; }}
class Cat implements Animal {
  public function makeSound() {
    echo " Meow ";
  }
}

$ animal = new Cat (); $ Animal-> makeOund ();?>
  public function makeSound() {
    echo " Bark ";
  }
}

Hãy tự mình thử »
  public function makeSound() {
    echo " Squeak ";
  }
}

Từ ví dụ trên, hãy nói 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 động vật có thể làm, nhưng mỗi con vật làm điều đó theo cách riêng của nó.
$cat = new Cat();
$dog = new Dog();
$mouse = new Mouse();
$animals = array($cat, $dog, $mouse);

Sử dụng 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 động vật ngay cả khi mỗi con vật cư xử khác nhau:
foreach($animals as $animal) {
  $animal->makeSound();
}
?>

Hãy tự mình thử »

Từ ví dụ trên, hãy nói 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 động vật có thể làm, nhưng mỗi con vật làm điều đó theo cách riêng của nó.

Sử dụng 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 động vật ngay cả khi mỗi con vật cư xử khác nhau:

// lớp định nghĩa class Cat thực hiện động vật {& nbsp; hàm công khai () {& nbsp; & nbsp; & nbsp; tiếng vang "meow"; & nbsp; }}



Giao diện là một thuộc tính khác của PHP cho phép nhà phát triển xây dựng một chương trình mà không có bất kỳ phương pháp phức tạp nào. Nó kế thừa cùng một phương pháp công khai mà một lớp giữ. Do các thuộc tính này, một giao diện có thể xác định các phương thức. Tuy nhiên, chúng ta không thể xác định phương thức trong giao diện cụ thể đó và chúng ta phải xác định phương thức bên trong lớp con nơi chúng ta gọi là giao diện. Các giao diện cũng tương tự như các lớp và sự khác biệt duy nhất là lớp được thay đổi với giao diện và các phương thức không có bất kỳ nội dung nào được xác định bên trong. Chúng tôi sử dụng giao diện trong PHP.

Một lớp duy nhất không thể thực hiện hai hàm có cùng tên phương thức với trình biên dịch sẽ trả về lỗi. Tương tự, giống như các đặc điểm, chúng ta cũng có thể sử dụng giao diện để truy cập nhiều kế thừa vì một lớp có thể bắt đầu nhiều giao diện, cuối cùng sẽ giúp thừa hưởng các đặc điểm từ nhiều lớp cha mẹ

Thí dụ

Output:

Trong chương trình trên, chúng tôi đã tuyên bố một loại trái cây giao diện với hàm lượng () bên trong. Chúng tôi đã tuyên bố một xoài lớp và gán trái cây giao diện cho nó; Chúng tôi đã xác định hương vị chức năng (). Cuối cùng, chúng tôi đã tạo ra một đối tượng tất cả được gọi là lớp con của chúng tôi. Do giao diện, xoài lớp trẻ em của chúng tôi có thể truy cập trái cây giao diện và lấy chức năng Hương vị () từ nófruit with a function taste() inside. We have declared a class mango and assigned the interface fruit to it; we have defined the function taste(). Finally, we have created an object all called our child class. Due to the interface, our child class mango can access the interface fruit and retrieve the function taste() from it

Sử dụng giao diện

1) để thừa hưởng các thuộc tính của lớp cha

Để thực hiện giao diện bằng lớp, chúng tôi phải sử dụng từ khóa triển khai và từ khóa mở rộng để gán phân cấp của lớp cha

Syntax:

Example:

Output:

this is the first class 
this is interface which is defined inside child class 
this is an inherited child class using an interface

Trong chương trình trên, chúng tôi có một lớp cha mẹ ParentClass có chứa chức năng ParentFunction () và chúng tôi có một giao diện gọi là FirstInterface, giữ hàm có tên InterfaceFunction (). Tuy nhiên, chúng tôi không thể xác định hàm được khai báo bên trong giao diện được tạo của chúng tôi và chúng tôi phải xác định hàm được khai báo bên trong lớp con. Cuối cùng, chúng tôi có một lớp con với tên ChildClass với Chức năng Childfunction () và kế thừa chức năng từ giao diện bằng cách sử dụng thuộc tính mở rộng và thực hiện của PHP. Ngoài ra, chúng tôi đã xác định giao diện của chúng tôi () ở trẻ. Và để truy cập các lớp và giao diện, chúng tôi đã tạo một đối tượng OBJ và gọi tất cả các chức năng bằng cùng một đối tượng.parentClass which contains a function parentFunction(), and we have an interface called firstInterface, which holds the function named interfaceFunction(). Still, we cannot define the declared function inside our created interface, and we have to define the declared function inside the child class. In the end, we have a child class with the name childClass with function childFunction() and inherited the function from the interface using the extends and implement property of PHP. Also, we have defined our interfaceFunction() in the child. And to access the classes and interface, we have created an object obj and invoked all the functions using the same object.

2) để kế thừa các thuộc tính của nhiều giao diện

Để triển khai giao diện bằng lớp, chúng tôi phải sử dụng từ khóa triển khai và một lớp duy nhất có thể triển khai nhiều hơn một giao diện

Example:

Output:

this is the first interface
this is the second interface
this is a child inherited from both interfaces

Trong chương trình trên, chúng tôi đã khai báo hai giao diện, đầu tiên với tên FirstInterFace với hàm interfacesOne () và thứ hai với tên thứ hai interface với hàm onterfacetwo (). Tuy nhiên, chúng tôi chỉ tuyên bố các hàm giao diện và sẽ xác định cùng một chức năng trong lớp con. Cuối cùng, chúng tôi có một lớp con với tên ChildClass với Chức năng Childfunction () và được kế thừa cả hai giao diện bằng mệnh đề Implays. Bên trong hàm, chúng tôi đã đưa ra định nghĩa về các chức năng được khai báo trong các giao diện. Và để truy cập các lớp và giao diện, chúng tôi đã tạo một đối tượng với tên OBJ và gọi tất cả các hàm bằng cùng một đối tượng.firstInterface with function interfaceone() and second with name secondInterface with function onterfacetwo(). Still, we have only declared the interface functions and will define the same function in the child class. In the end, we have a child class with the name childClass with function childFunction() and inherited both the interfaces using the implements clause. Inside the function, we have given the definition of functions declared in interfaces. And to access the classes and interfaces, we have created an object with the name obj and called all the functions using the same object.

Tầm quan trọng của việc sử dụng giao diện:

  • Giao diện cung cấp cho nhà phát triển một định dạng có cấu trúc hơn khá khó để đạt được với các lớp.
  • Chúng ta có thể dễ dàng sử dụng thuộc tính Di truyền của OPPS trong một ngôn ngữ lập trình chuỗi duy nhất như PHP bằng giao diện.
  • Bằng cách triển khai giao diện, người gọi của đối tượng chỉ cần quan tâm đến giao diện của đối tượng chứ không phải triển khai các phương thức của đối tượng.
  • Giao diện cho phép các lớp không liên quan thực hiện các phương pháp tương tự bất kể vị trí của chúng trong hệ thống phân cấp kế thừa của lớp.
  • Chúng tôi không thể triển khai nhiều giao diện với cùng một tên phương thức vì nó sẽ kết thúc trong sự nhầm lẫn và sự mơ hồ về phương pháp.
  • Chúng ta có thể dễ dàng tạo một hệ thống phân cấp giữa hai lớp bằng cách sử dụng từ khóa mở rộng.

Tại sao giao diện được sử dụng trong PHP?

PHP - Giao diện là gì?Giao diện cho phép bạn chỉ định những phương thức nào mà một lớp nên thực hiện.Các giao diện giúp 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".allow you to specify what methods a class should implement. Interfaces make it easy to use a variety of different classes in the same way. When one or more classes use the same interface, it is referred to as "polymorphism".

Tại sao chúng ta sử dụng giao diện?

Các giao diện rất hữu ích cho những điều sau: nắm bắt sự tương đồng giữa các lớp không liên quan mà không cần một cách giả tạo buộc mối quan hệ lớp học.Tuyên bố các phương pháp mà một hoặc nhiều lớp dự kiến sẽ thực hiện.Tiết lộ giao diện lập trình của một đối tượng mà không tiết lộ lớp của nó.Capturing similarities among unrelated classes without artificially forcing a class relationship. Declaring methods that one or more classes are expected to implement. Revealing an object's programming interface without revealing its class.