Интерфейсы объектов в php

Интерфейсы объектов в PHP позволяют создавать код, который указывает, какие методы должен реализовать класс, без необходимости определять, как именно они должны быть реализованы

    Интерфейсы объектов

    Интерфейсы объектов позволяются создавать код, указывающий, какие методы должен реализовать класс, без необходимости определять, как именно они должны быть реализованы
    Интерфейсы используются для
    Интерфейсы объявляются с ключевым словом interface
    Тело методов интерфейсов должно быть пустым
    Все методы определенные в интерфейсе, должны быть общедоступными
    Для реализации интерфейсов используется оператор implements
    Класс должен реализовать все методы, описанные в интерфейсе, иначе произойдет фатальная ошибка
    Класс может реализовывать несколько интерфейсов, разделяя каждый интерфейс запятой
    Класс реализующий интерфейс, может использовать для своих параметров имя, отличное от имени итерфейса, но делать так е рекомендуется
    Интерфейсы могут быть унаследованы друг от друга, так же как и классы, с помощью оператора extends
    Класс реализующий интерфейс, должен объявить все методы в интерфейсе с совместимой сигнатурой
    Интерфейсы могут содержать константы. До PHP 8.1.0 нельзя было переопределить константы, классом или интерфейсом, который их наследует

    interface A { public function foo(); } interface B extends A { public function baz(Baz $baz); } #Изменение модификатора доступа, типа и кол-ва аргументов приведет к ошибке class C implements B { public function foo() { } public function baz(Baz $baz) { } } #Совместимость с несколькими интерфейсами class Foo {} class Bar extends Foo {} interface A { public function myfunc(Foo $arg): Foo; } interface B { public function myfunc(Bar $arg): Bar; } class MyClass implements A, B { public function myfunc(Foo $arg): Bar { return new Bar(); } } #Множественное наследование интерфейсов interface A { public function Foo(); } interface B { public function Bar(); } interface C extends A, B { public function Baz(); } class D implements C { public function Foo() { echo "Foo"; } public function Bar() { echo "Bar"; } public function Baz() { echo "Baz"; } } $obj1 = new D(); $obj1->Foo(); $obj1->Bar(); $obj1->Baz(); #Использование констант interface A { const B = 'Константа интерфейса'; } #Вывод значения константы echo A::B; class B implements A { // До PHP 8.1.0 этот код не будет работать, // потому что было нельзя переопределять константы. const B = 'Константа новое значение'; } echo B::B; #Одновременное расширение и внедрение class A { } interface B { } interface C { } class D extends A implements B, C { } #Интерфейсы с асбстрактными классами abstract class B implements A { ..... }
    Источники
    Последнее изменение: 19.11.2024 03:31


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ