Đa hình trong ví dụ php

Giao diện đối tượng cho phép bạn tạo mã chỉ định phương thức nào lớp phải triển khai mà không cần phải xác định cách các phương thức này được triển khai. Các giao diện chia sẻ một không gian tên với các lớp và đặc điểm, vì vậy chúng có thể không sử dụng cùng tên

Các giao diện được định nghĩa giống như một lớp, nhưng với từ khóa interface thay thế từ khóa class và không có bất kỳ phương thức nào có nội dung được xác định

Tất cả các phương thức được khai báo trong một giao diện phải được công khai;

Trong thực tế, các giao diện phục vụ hai mục đích bổ sung

  • Để cho phép các nhà phát triển tạo các đối tượng thuộc các lớp khác nhau có thể được sử dụng thay thế cho nhau vì chúng triển khai cùng một hoặc nhiều giao diện. Một ví dụ phổ biến là nhiều dịch vụ truy cập cơ sở dữ liệu, nhiều cổng thanh toán hoặc các chiến lược lưu trữ khác nhau. Các triển khai khác nhau có thể được hoán đổi mà không yêu cầu bất kỳ thay đổi nào đối với mã sử dụng chúng
  • Để cho phép một hàm hoặc phương thức chấp nhận và hoạt động trên một tham số phù hợp với giao diện, trong khi không quan tâm đối tượng có thể làm gì khác hoặc nó được triển khai như thế nào. Các giao diện này thường được đặt tên như Iterable, Cacheable, Renderable, v.v. để mô tả tầm quan trọng của hành vi

Các giao diện có thể định nghĩa các phương thức ma thuật để yêu cầu các lớp triển khai thực hiện các phương thức đó

Ghi chú

Mặc dù chúng được hỗ trợ, nhưng việc bao gồm trong các giao diện không được khuyến khích. Làm như vậy làm giảm đáng kể tính linh hoạt của đối tượng thực hiện giao diện. Ngoài ra, các hàm tạo không được thực thi bởi các quy tắc kế thừa, điều này có thể gây ra hành vi không nhất quán và không mong muốn

implements

Để triển khai một giao diện, toán tử implements được sử dụng. Tất cả các phương thức trong giao diện phải được thực hiện trong một lớp; . Các lớp có thể triển khai nhiều giao diện nếu muốn bằng cách tách từng giao diện bằng dấu phẩy

Cảnh báo

Một lớp cài đặt giao diện có thể sử dụng một tên khác cho các tham số của nó so với giao diện. Tuy nhiên, kể từ PHP 8. 0 ngôn ngữ hỗ trợ, có nghĩa là người gọi có thể dựa vào tên tham số trong giao diện. Vì lý do đó, các nhà phát triển nên sử dụng các tên tham số giống như giao diện đang được triển khai

Ghi chú

Các giao diện có thể được mở rộng như các lớp bằng cách sử dụng toán tử mở rộng

Ghi chú

Lớp thực hiện giao diện phải khai báo tất cả các phương thức trong giao diện với một. Một lớp có thể triển khai nhiều giao diện khai báo một phương thức có cùng tên. Trong trường hợp này, việc triển khai phải tuân theo tất cả các giao diện. Vì vậy hiệp phương sai và chống phương sai có thể được áp dụng

Constants

Các giao diện có thể có hằng số. Hằng số giao diện hoạt động chính xác như hằng số lớp. Trước PHP 8. 1. 0, chúng không thể bị ghi đè bởi một lớp/giao diện kế thừa chúng

ví dụ

Ví dụ #1 Ví dụ về giao diện

________số 8_______

// Implement the interface
// This will work
class WorkingTemplate implements Template
{
private $vars = [];

class0

class1

class2

class3

class4

Ví dụ #2 Giao diện có thể mở rộng

class5

class6

class7

class8

class9

Iterable0

Ví dụ #3 Khả năng tương thích phương sai với nhiều giao diện

Iterable1

Iterable2

Iterable3

Iterable4

Ví dụ #4 Kế thừa nhiều giao diện

class5

Iterable6

Iterable7

Iterable8

Iterable9

Cacheable0

Ví dụ #5 Giao diện với hằng số

Cacheable1

Cacheable2

Cacheable3

Cacheable4

Ví dụ #6 Giao diện với các lớp trừu tượng

Cacheable5

Cacheable6

Cacheable7

Cacheable8

Ví dụ #7 Mở rộng và triển khai đồng thời

Cacheable9

Renderable0

Renderable1

Renderable2

Một giao diện, cùng với các khai báo kiểu, cung cấp một cách tốt để đảm bảo rằng một đối tượng cụ thể chứa các phương thức cụ thể. Xem các khai báo kiểu và toán tử instanceof

Chủ Đề