PHP triển khai nhiều giao diện

Trong PHP, các khối giao diện khai báo một tập hợp các hàm được định nghĩa với một lớp để thực hiện giao diện này. Một lớp có thể mở rộng nhiều hơn một giao diện, do đó, chúng ta có thể mô phỏng nhiều kế thừa trong PHP. Hãy để chúng tôi xem tất cả về nó, chi tiết với bài viết này

Lớp PHP triển khai Giao diện

Trong khi triển khai một giao diện với một lớp PHP, chúng ta phải định nghĩa tất cả các hàm được khai báo trong giao diện đó, không thay đổi đối số, kiểu trả về, công cụ sửa đổi truy cập hoặc bất kỳ thứ gì

Ví dụ: đoạn mã sau xử lý giao diện và lớp PHP để chỉ ra cách triển khai giao diện cho một lớp

 $v] {
            $menu_bar .= "" . $menu_array[$k]["menu_caption"] . "  ";
        }
        return $menu_bar;
    }

    public function getContent[$page]
    {
        $content = "Welcome to the " . ucwords[$page] . " page";
        return $content;
    }
}
?>

Trong ví dụ trên, chúng tôi đã tạo một giao diện PHP có tên là UserInterface và giao diện này được triển khai bởi một lớp WebApp bằng cách sử dụng từ khóa implements. Chúng tôi có thể triển khai giao diện này, bất cứ nơi nào chúng tôi muốn cùng một bộ thành phần giao diện người dùng là menu và nội dung cho ứng dụng web của chúng tôi

Trong khi triển khai giao diện trên, hai hàm được khai báo tại UserInterface đã được định nghĩa trong lớp triển khai giao diện đó

Trong khi xác định, nếu bất kỳ một trong các hàm đó hoặc bất kỳ chữ ký nào, như đối số, kiểu trả về bị thay đổi, thì nó sẽ gây ra một số lỗi PHP. Ví dụ: nếu lớp WebApp không có định nghĩa getContent[] thì lỗi sẽ là,

Fatal error: Class WebApp contains 1 abstract method and must therefore be declared abstract or implement the remaining methods [UserInterface::getContent] in ...

Giao diện mở rộng Giao diện

Trong PHP, một giao diện có thể mở rộng một giao diện khác và do đó nó kế thừa tất cả các chức năng được khai báo với giao diện này. Đối với điều đó, chúng ta nên sử dụng từ khóa mở rộng, như chúng ta đã sử dụng để kế thừa các lớp

Ví dụ, chúng ta hãy thêm một giao diện tên là Widget, với chương trình trên, trong đó hàm getPopularTags[] được khai báo. Bây giờ, chúng ta sẽ mở rộng giao diện Widget này cho UserInterface


Bằng cách mở rộng giao diện Widget, nghĩa là UserInterface được mở rộng thêm một khai báo hàm cho getPopularTags[]. Bây giờ, để triển khai UserInterface, một lớp PHP cũng phải định nghĩa getPopularTags[]

Đa kế thừa trong PHP

Như chúng ta đã thấy trong bài viết về kế thừa PHP, PHP chỉ hỗ trợ kế thừa đơn. Tuy nhiên, bằng cách sử dụng thuộc tính mở rộng giao diện PHP này, chúng ta có thể mô phỏng nhiều kế thừa

Một giao diện mở rộng hai giao diện, vì một lớp kế thừa hai lớp cha nơi hỗ trợ nhiều kế thừa. Ví dụ, trong chương trình sau, UserInterface mở rộng cả hai giao diện có tên là Advertisement và Widget để kế thừa các hàm đã khai báo với chúng


Nếu bất kỳ lớp PHP nào triển khai Giao diện người dùng phải có định nghĩa cho tất cả các chức năng được khai báo trong Giao diện người dùng và cả trong các giao diện khác, đó là Tiện ích con, Quảng cáo, thì nó sẽ mở rộng bằng

Hằng số giao diện PHP

Trong PHP, các hằng số được định nghĩa bên trong khối giao diện, bằng cách sử dụng từ khóa const. Ví dụ, hằng số Giao diện PHP có thể được định nghĩa như sau


Chúng ta có thể truy cập các hằng số giao diện bằng cách sử dụng tên giao diện hoặc bằng cách sử dụng tên của lớp và cũng là tên của thể hiện của lớp thực hiện giao diện

Ví dụ: nếu chúng tôi xác định MAX_LENGTH cho giao diện Người dùng trong ví dụ đầu tiên của chúng tôi, thì hằng số này có thể được truy cập bằng cách sử dụng một số cách có thể sau đây

Tuyên bố từ chối trách nhiệm. Các mẫu mã và API có sẵn tại www. liên kết hướng dẫn. com có ​​sẵn hoàn toàn miễn phí. Bạn có thể tự chịu rủi ro khi sử dụng nó cho mục đích thương mại cũng như phi thương mại, nhưng bạn không thể sử dụng nó để đăng trên blog hoặc các trang web hướng dẫn khác tương tự như www. liên kết hướng dẫn. com mà không đưa link tham chiếu đến bài viết gốc.
Tất cả các mẫu mã và API do tác giả cung cấp đều là sáng tạo của họ và cả tác giả cũng như trang web đều không chịu trách nhiệm nếu nó không hoạt động như dự kiến.

Tôi đồng ý với các điều khoản trên

Bài đăng này đã hơn 18 tháng tuổi. Do công nghệ thay đổi quá nhanh nên nội dung này có thể lỗi thời [nhưng không phải lúc nào cũng vậy]. Hãy nhớ xác minh bất kỳ thông tin kỹ thuật hoặc lập trình nào với bản phát hành hiện tại

Mọi lập trình viên PHP đều biết rằng bạn không thể mở rộng nhiều lớp với PHP. Bạn chỉ có thể làm một - đó là tốt. Trên thực tế, nếu bạn cần nhiều mã chia sẻ hơn, hãy đảm bảo tập trung vào việc sử dụng các đặc điểm thay thế

Tuy nhiên, điều mà tôi không nhận ra cho đến gần đây là Giao diện PHP có thể mở rộng nhiều giao diện khác. [Tôi thừa nhận, tôi không phải là một lập trình viên dựa trên hợp đồng cho đến gần đây. ] Hãy để tôi chỉ cho bạn ý của tôi

interface Talks
{
  public function say[string $message];
}

interface Eats
{
  public function putInMouth[FoodObject $food];
}

interface Human extends Talks, Eats
{
  public function singsOffKey[SongObject $song];
}

Bây giờ, khi bạn có một đối tượng triển khai giao diện Human, nó sẽ phải xác định các phương thức putInMouthsay ngoài phương thức singsOffKey. Khá ngọt ngào

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

Triển khai nhiều giao diện . Nếu bạn làm điều đó, bạn phải khai báo tất cả các phương thức trừu tượng trong lớp. A class can implement multiple interfaces separated by commas in the declaration [After the implements keyword]. If you do that, you have to declare all the abstract methods within the class.

Lớp PHP có thể triển khai bao nhiêu giao diện?

Bạn có thể sửa đổi bộ đếm var trong vòng lặp for để làm cho tập lệnh đó tạo ra nhiều giao diện hơn nữa sẽ được triển khai bởi lớp "Bar". Nó dễ dàng hoạt động với lên đến 9999 giao diện [và rõ ràng là nhiều hơn nữa] như bạn có thể thấy từ đầu ra của dòng mã cuối cùng [print_r] khi thực thi tập lệnh đó.

Bạn có thể triển khai nhiều giao diện không?

Không cho phép đa kế thừa [ mở rộng ]. Tuy nhiên, các giao diện không phải là các lớp và một lớp có thể triển khai nhiều hơn một giao diện . Các interface gốc được khai báo trong danh sách được phân tách bằng dấu phẩy, sau từ khóa implements.

Một giao diện có thể mở rộng giao diện PHP khác không?

Trong PHP, một giao diện có thể mở rộng một giao diện khác và do đó nó kế thừa tất cả các chức năng được khai báo với giao diện này. Đối với điều đó, chúng ta nên sử dụng từ khóa mở rộng, như chúng ta đã sử dụng để kế thừa các lớp.

Chủ Đề