ЛУЧШИЙ САЙТ ДЛЯ ВЕБ-РАЗРАБОТЧИКОВ

PHP Учебник

PHP СТАРТ PHP Интро PHP Установка PHP Синтаксис PHP Комментарии PHP Переменные PHP Echo / Print PHP Типы данных PHP Строки PHP Числа PHP Математика PHP Константы PHP Операторы PHP If...Else...Elseif PHP Switch PHP Циклы PHP Функции PHP Массивы PHP Суперглобальные PHP RegEx

PHP Формы

PHP Обработка формы PHP Проверка формы PHP Обязательные поля формы PHP Форма URL/E-mail PHP Заполнение формы

PHP Расширенный

PHP Дата и время PHP Подключение файлов PHP Обработка файлов PHP Файл открыть/читать PHP Файл создать/записать PHP Файл Загрузить PHP Куки PHP Сессии PHP Фильтры PHP Расширенные фильтры PHP Callback функции PHP JSON PHP Исключения

PHP ООП

PHP Что такое ООП PHP классы/объекты PHP Конструктор PHP Деструктор PHP Модификаторы доступа PHP Наследование PHP Константы PHP Абстрактные классы PHP Интерфейсы PHP Трейты PHP Статические методы PHP Статические свойства PHP Пространства имён PHP Итерации

MySQL База данных

MySQL База данных MySQL Подключение MySQL Создать БД MySQL Создать таблицы MySQL Вставить данные MySQL Получить последний ID MySQL Вставить несколько записей MySQL Подготовленные инструкции MySQL Выбрать данные MySQL Where MySQL Order By MySQL Удаление данных MySQL Обновление данных MySQL Ограничение данных

PHP XML

PHP XML Парсеры PHP SimpleXML Парсер PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Интро AJAX PHP AJAX База данных AJAX XML AJAX Живой поиск AJAX Опрос

PHP Примеры

PHP Примеры PHP Компилятор PHP Викторина PHP Упражнения PHP Сертификат

PHP Справочник

PHP Обзор PHP Массив PHP Календарь PHP Дата PHP Каталог PHP Ошибка PHP Исключение PHP Файловая система PHP Фильтр PHP FTP PHP JSON PHP Ключевые слова PHP Libxml PHP Почта PHP Математика PHP Разное PHP MySQLi PHP Сеть PHP Output Control PHP RegEx PHP SimpleXML PHP Поток PHP Строка PHP Обработка переменных PHP XML Парсер PHP Zip PHP Часовые пояса

PHP. Уроки для начинающих

PHP ООП - Интерфейсы


PHP - Что такое интерфейсы?

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

Интерфейсы позволяют легко использовать различные классы одним и тем же способом. Когда один или несколько классов используют один и тот же интерфейс, это называется "полиморфизмом".

Интерфейсы объявляются с помощью ключевого слова interface:

Синтаксис

<?php
interface InterfaceName {
  public function someMethod1();
  public function someMethod2($name, $color);
  public function someMethod3() : string;
}
?>

PHP - Интерфейсы и абстрактные классы

Интерфейс похож на абстрактные классы. Разница между интерфейсами и абстрактными классами заключается в следующем:

  • Интерфейсы не могут иметь свойств, в то время как абстрактные классы могут
  • Все методы интерфейса должны быть общедоступными, а методы абстрактного класса - общедоступными или защищенными
  • Все методы в интерфейсе являются абстрактными, поэтому они не могут быть реализованы в коде, и ключевое слово abstract не требуется
  • Классы могут реализовывать интерфейс, одновременно наследуя от другого класса

PHP - Использование интерфейсов

Чтобы реализовать интерфейс, класс должен использовать ключевое слово implements.

Класс, реализующий интерфейс, должен реализовывать все методы интерфейса.

Пример

<?php
interface Animal {
  public function makeSound();
}

class Cat implements Animal {
  public function makeSound() {
    echo "Meow";
  }
}

$animal = new Cat();
$animal->makeSound();
?>
Попробуйте сами »

Из приведенного выше примера предположим, что мы хотели бы написать программу, которая управляет группой животных. Есть действия, которые могут выполнять все животные, но каждое животное делает это по-своему.

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

Пример

<?php
// Определение интерфейса
interface Animal {
  public function makeSound();
}

// Определения классов
class Cat implements Animal {
  public function makeSound() {
    echo " Meow ";
  }
}

class Dog implements Animal {
  public function makeSound() {
    echo " Bark ";
  }
}

class Mouse implements Animal {
  public function makeSound() {
    echo " Squeak ";
  }
}

// Составьте список животных
$cat = new Cat();
$dog = new Dog();
$mouse = new Mouse();
$animals = array($cat, $dog, $mouse);

// Скажите животным издать звук
foreach($animals as $animal) {
  $animal->makeSound();
}
?>
Попробуйте сами »

Объяснение примера

Cat, Dog и Mouse - все классы, реализующие интерфейс Animal, что означает, что все они могут издавать звук с помощью метода makeSound(). Из-за этого мы можем перебрать всех животных и сказать им, чтобы они издали звук, даже если мы не знаем, к какому типу животных относится каждое из них.

Поскольку интерфейс не сообщает классам, как реализовать метод, каждое животное может издавать звук по-своему.