Hướng dẫn dùng define implements trong PHP

Giao diện đối tượng cho phép bạn tạo mã chỉ định phương thức nào một lớp phải thực hiện, mà không phải xác định cách thực hiện các phương thức này. 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 không được sử dụng cùng tên.

Nội dung chính

  • Cảnh báo
  • Sự khác biệt giữa các dụng cụ và mở rộng trong PHP là gì?
  • Các giao diện được thực hiện trong PHP như thế nào?
  • Tôi có thể triển khai nhiều giao diện trong PHP không?
  • Tại sao giao diện được sử dụng trong PHP?

Các giao diện được xác định theo cách tương tự 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ủa chúng đượ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; Đây là bản chất của một giao diện.

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 của các lớp khác nhau có thể được sử dụng thay thế cho vì chúng thực hiện cùng một giao diện hoặc 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 bộ đệm 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 đến những gì đối tượng có thể làm hoặc cách nó được thực hiện. Các giao diện này thường được đặt tên như Iterable, Cacheable, Renderable hoặc vì vậy để mô tả tầm quan trọng của hành vi.

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

Ghi chú::

Mặc dù chúng được hỗ trợ, bao gồm các hàm tạo trong giao diện không được khuyến khích mạnh mẽ. 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 nhà xây dựng không được thực thi bởi các quy tắc thừa kế, có thể gây ra hành vi không nhất quán và bất ngờ.

implements

Để thực hiện 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; Không làm như vậy sẽ dẫn đến một lỗi nghiêm trọng. Các lớp có thể triển khai nhiều hơn một 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ó thể triển khai hai giao diện xác định một phương thức có cùng tên, chỉ khi khai báo phương thức trong cả hai giao diện là giống hệt nhau.

Cảnh báo

Một lớp có thể triển khai hai giao diện xác định một phương thức có cùng tên, chỉ khi khai báo phương thức trong cả hai giao diện là giống hệt nhau.

Ghi chú::

Mặc dù chúng được hỗ trợ, bao gồm các hàm tạo trong giao diện không được khuyến khích mạnh mẽ. 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 nhà xây dựng không được thực thi bởi các quy tắc thừa kế, có thể gây ra hành vi không nhất quán và bất ngờ.

Ghi chú::

Mặc dù chúng được hỗ trợ, bao gồm các hàm tạo trong giao diện không được khuyến khích mạnh mẽ. 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 nhà xây dựng không được thực thi bởi các quy tắc thừa kế, có thể gây ra hành vi không nhất quán và bất ngờ.

Constants

Để thực hiện 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; Không làm như vậy sẽ dẫn đến một lỗi nghiêm trọng. Các lớp có thể triển khai nhiều hơn một 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ó thể triển khai hai giao diện xác định một phương thức có cùng tên, chỉ khi khai báo phương thức trong cả hai giao diện là giống hệt nhau.

// Declare the interface 'Template'
interface Template
{
    public function 
setVariable($name$var);
    public function 
getHtml($template);
}
// Implement the interface
// This will work
class WorkingTemplate implements Template
{
    private 
$vars = [];

      public function

class0

Một lớp thực hiện 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ác đối số có tên, 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 đó, chúng tôi khuyến nghị các nhà phát triển sử dụng cùng tên tham số giống như giao diện đang được triển khai.

class1

interface

class3

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

class1

interface

class6

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 chữ ký tương thích.

class7

class

class9

Nó có thể cho các giao diện 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.

Iterable0

Iterable1

Iterable2

Ví dụ

Iterable3

interface

Iterable5

Ví dụ về giao diện số 1

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

Ví dụ #3 Di truyền giao diện nhiều

Iterable6

Iterable7

Iterable8

Iterable9

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

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

Cacheable0

Ví dụ #6 mở rộng và thực hiện đồng thời

Một giao diện, cùng với các khai báo loại, 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 InstanceOf toán tử và khai báo loại.

Cacheable1

Cacheable2

Cacheable3

Sự khác biệt giữa các dụng cụ và mở rộng trong PHP là gì?

Mở rộng: Điều này được sử dụng để lấy các thuộc tính của lớp cha vào lớp cơ sở và có thể chứa các phương thức đã được xác định có thể được ghi đè trong lớp con. Thực hiện: Điều này được sử dụng để thực hiện một giao diện (lớp cha chỉ có chữ ký chức năng nhưng không phải là định nghĩa của chúng) bằng cách xác định nó trong lớp con.

Các giao diện được thực hiện trong PHP như thế nào?

PHP - Giao diện so với 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 một giao diện là 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 trong cùng ...All interface methods must be public, while abstract class methods is public or protected. All methods in an interface are abstract, so they cannot be implemented in code and the abstract keyword is not necessary. Classes can implement an interface while inheriting from another class at the same ...

Tôi có thể triển khai nhiều giao diện trong PHP không?

Thực hiện các lớp có thể triển khai nhiều hơn một giao diện nếu muốn bằng cách tách từng giao diện bằng dấu phẩy.Một lớp có thể triển khai hai giao diện xác định một phương thức có cùng tên, chỉ khi khai báo phương thức trong cả hai giao diện là giống hệt nhau.Classes may implement more than one interface if desired by separating each interface with a comma. A class can implement two interfaces which define a method with the same name, only if the method declaration in both interfaces is identical.

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

Giao diện PHP xác định một hợp đồng mà một lớp phải thực hiện.Nếu một lớp PHP là bản thiết kế cho các đối tượng, giao diện là bản thiết kế cho các lớp.Bất kỳ lớp nào thực hiện một giao diện nhất định đều có thể được dự kiến có hành vi tương tự về những gì có thể được gọi, cách gọi nó và những gì sẽ được trả lại.defines a contract which a class must fulfill. If a PHP class is a blueprint for objects, an interface is a blueprint for classes. Any class implementing a given interface can be expected to have the same behavior in terms of what can be called, how it can be called, and what will be returned.