У PHP ООП інтерфейс - це клас, в якому всі методи є абстрактними і відкритими.
Швидко пробіжить по трьом термінам, які у цьому визначенні. Клас, абстрактний і відкритий. Клас являє собою шаблон або зразок об'єкта, він є основою об'єктно-орієнтованого програмування. Абстрактний - це спеціальний метод, який оголошується, але не має тіла, тільки порожні дужки. Відкритий - це модифікатор доступу public. він пов'язаний з доступом до методам. Це означає, що він доступний з будь-якого місця: з цього класу, поза його меж і з будь-якого похідного класу.
Інтерфейс PHP являє собою інструмент для створення надійного коду, що визначає методи, які повинні бути реалізовані за допомогою класу без визначення обробки цих методів. Це потужна і проста концепція, яка використовується в об'єктно-орієнтованому PHP. Для його створення використовується ключове слово interface. він визначається так само, як клас PHP. Методи, що містяться в ньому, не мають ніякого функціоналу, але інтерфейс задає, які методи необхідні для інших класів. Будь-клас, спадщини від інтерфейсу, повинен містити ті ж методи, які містяться в інтерфейсі, інакше видається помилка.
В інтерфейсі ООП PHP ми задаємо тільки імена методів і їх параметри, а реалізовані вони можуть бути пізніше. Зазвичай оголошують все методи інтерфейсу як public. Для реалізації інтерфейсу використовується ключове слово implements. При необхідності клас може реалізувати більш одного інтерфейсу, між собою вони розділяються комою. Як і клас, інтерфейс може містити константи. Єдина відмінність полягає в тому, що вони не можуть бути перевизначені в похідному класі.
Визначення і використання інтерфейсів
Інтерфейс визначається за допомогою ключового слова interface. Всі методи в ньому повинні бути відкритими і абстрактними:
Це порожній інтерфейс. Ми додамо в нього абстрактний метод motion. Таким чином, ми створимо простий PHP 5 ООП інтерфейс, який може бути реалізований пізніше:
Цей інтерфейс може бути реалізований будь-яким класом animal. всі класи animal міститимуть метод motion. Давайте розглянемо приклад. Для реалізації інтерфейсу ми використовуємо ключове слово implements:
PHP-інтерфейс і абстрактні класи
Інтерфейси і абстрактні класи дуже схожі за своєю концепцією. Вони допомагають у створенні шаблонів для класів, які будуть використовуватися в додатку. Згідно основам ООП PHP. вони відрізняються один від одного таким:
- В інтерфейсі всі методи є абстрактними (без реалізації). В абстрактному класі лише деякі методи є абстрактними. Абстрактний клас повинен містити, принаймні, один абстрактний метод. Інакше це буде стандартний клас PHP;
- В інтерфейсі PHP всі оголошені методи є відкритими, а в абстрактному класі методи можуть бути відкритими, приватними або захищеними. Отже, для інтерфейсів існує обмеження на використання модифікаторів доступу, а в абстрактному класі таких обмежень немає;
- Клас може реалізувати необмежену кількість інтерфейсів. У той же час клас PHP може породити тільки один абстрактний клас;
- Ви повинні перевизначати всі методи інтерфейсу, а в абстрактному класі у вас є вибір: перевизначати методи або залишити їх без змін;
- Інтерфейси мають більш суворі правила, ніж абстрактні класи. Інтерфейс PHP покликаний забезпечити певну логіку, він виступає в якості порожній оболонки або шаблону для інших класів.
Для чого використовуються інтерфейси PHP
Інтерфейс допомагає програмісту мислити в правильному напрямку. З точки зору PHP ООП. клас являє собою шаблон, а об'єкт - це набір можливостей. Ми більшою мірою пов'язані з функціоналом, що він робить, а не як він це робить. Тому ми визначаємо основний інтерфейс, який є загальним, а потім він реалізується, що допомагає мислити в правильному напрямку.
Коригування коду в майбутньому
Розробка на об'єктно-орієнтованому PHP дозволяє коригувати код в майбутньому, не зачіпаючи при цьому основний функціонал. При написанні коду в майбутньому ці характеристики завжди будуть враховуватися, а потім включатися додаткові функції, але це ніяк не вплине на основні характеристики вже існуючих об'єктів.
Краща структура програми
Об'єктно-орієнтована PHP був реалізований для поліпшення структури створюваних додатків. Додавання інтерфейсів в PHP сприяє тому, що кодування стає акуратним і чистим. Інтерфейси перешкоджають написання коду, який важко підтримувати і змінювати. За допомогою інтерфейсів ми можемо легко підтримувати і модифікувати код, що підвищує ефективність роботи програмістів.
Додавання всіх важливих функцій
За допомогою інтерфейсів PHP ми можемо створювати базовий функціонал, який може бути визначений для різних об'єктів по-різному, а потім додати інші функції, якщо це буде потрібно.
Ще один в ООП PHP приклад реалізації інтерфейсу
У цьому коді ми бачимо клас Cake. який реалізує інтерфейс Recipe.
Переклад статті «PHP interface» був підготовлений дружною командою проекту Сайтобудування від А до Я.