Đ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

Show

    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