Интерфейс PHP
В PHP ООП интерфейс - это класс, в котором все методы являются абстрактными и открытыми.
Быстро пробежимся по трем терминам, используемым в этом определении. Класс, абстрактный и открытый. Класс представляет собой шаблон или образец объекта, он является основой объектно-ориентированного программирования. Абстрактный - это специальный метод, который объявляется, но не имеет тела, только пустые скобки. Открытый - это модификатор доступа public, он связан с доступом к методам. Это означает, что он доступен из любого места: из этого класса, вне его пределов и из любого производного класса.
Интерфейс PHP представляет собой инструмент для создания надежного кода, определяющего методы, которые должны быть реализованы с помощью класса без определения обработки этих методов. Это мощная и простая концепция, используемая в объектно-ориентированном PHP. Для его создания используется ключевое слово interface, он определяется так же, как класс PHP. Методы, содержащиеся в нем, не имеют никакого функционала, но интерфейс задает, какие методы необходимы для других классов. Любой класс, наследующийся от интерфейса, должен содержать те же методы, которые содержатся в интерфейсе, иначе выдается ошибка.
В интерфейсе ООП PHP мы задаем только имена методов и их параметры, а реализованы они могут быть позже. Принято объявлять все методы интерфейса как public. Для реализации интерфейса используется ключевое слово implements. При необходимости класс может реализовать более одного интерфейса, между собой они разделяются запятой. Как и класс, интерфейс может содержать константы. Единственное отличие заключается в том, что они не могут быть переопределены в производном классе.
Определение и использование интерфейсов
Интерфейс определяется с помощью ключевого слова interface. Все методы в нем должны быть открытыми и абстрактными:
interface animal
{
}
Это пустой интерфейс. Мы добавим в него абстрактный метод motion. Таким образом, мы создадим простой PHP 5 ООП интерфейс, который может быть реализован позже:
interface animal
{
public function motion(){}
}
Этот интерфейс может быть реализован любым классом animal, все классы animal будут содержать метод motion. Давайте рассмотрим пример. Для реализации интерфейса мы используем ключевое слово implements:
class Lion implements animal
{
public function motion()
{ // Задайте здесь функционал этого метода для класса lion
}
}
class Fish implements animal
{
public function motion()
{ // Задайте функционал этого метода для класса fish
}
}
PHP-интерфейс и абстрактные классы
Интерфейсы и абстрактные классы очень похожи по своей концепции. Они помогают в создании шаблонов для классов, которые будут использоваться в приложении. Согласно основам ООП PHP, они отличаются друг от друга следующим:
- В интерфейсе все методы являются абстрактными (без реализации). В абстрактном классе лишь некоторые методы являются абстрактными. Абстрактный класс должен содержать, по крайней мере, один абстрактный метод. Иначе это будет стандартный класс PHP;
- В интерфейсе PHP все объявленные методы являются открытыми, а в абстрактном классе методы могут быть открытыми, частными или защищенными. Следовательно, для интерфейсов существует ограничение на использование модификаторов доступа, а в абстрактном классе таких ограничений нет;
- Класс может реализовать неограниченное количество интерфейсов. В то же время класс PHP может породить только один абстрактный класс;
- Вы должны переопределять все методы интерфейса, а в абстрактном классе у вас есть выбор: переопределять методы или оставить их без изменений;
- Интерфейсы имеют более строгие правила, чем абстрактные классы. Интерфейс PHP призван обеспечить определенную логику, он выступает в качестве пустой оболочки или шаблона для других классов.
Для чего используются интерфейсы PHP
Интерфейс помогает программисту мыслить в правильном направлении. С точки зрения PHP ООП, класс представляет собой шаблон, а объект - это набор возможностей. Мы в большей степени связаны с функционалом, что он делает, а не как он это делает. Поэтому мы определяем основной интерфейс, который является общим, а затем он реализуется, что помогает мыслить в правильном направлении.
Корректировка кода в будущем
Разработка на объектно-ориентированном PHP позволяет корректировать код в будущем, не затрагивая при этом основной функционал. При написании кода в будущем эти характеристики всегда будут учитываться, а затем включаться дополнительные функции, но это не окажет никакого влияния на основные характеристики уже существующих объектов.
Лучшая структура программы
Объектно-ориентированный PHP был реализован для улучшения структуры создаваемых приложений. Добавление интерфейсов в PHP способствует тому, что кодирование становится аккуратным и чистым. Интерфейсы препятствуют написанию кода, который трудно поддерживать и изменять. С помощью интерфейсов мы можем легко поддерживать и модифицировать код, что повышает эффективность работы программистов.
Добавление всех важных функций
С помощью интерфейсов PHP мы можем создавать базовый функционал, который может быть определен для различных объектов по-разному, а затем добавить другие функции, если это потребуется.
Еще один в ООП PHP пример реализации интерфейса
Пример:
<?php
interface Recipe
{
public function methodology();
}
?>
class Cake implements Recipe
{
public function methodology()
{
}
}
В этом коде мы видим класс Cake, который реализует интерфейс Recipe.