Інтерфейси в php

Відео: Інтерфейс в ООП

Інтерфейси в PHP

У цій статті ми продовжимо займатися можливостями по ООП, які нам надає PHP. І в цей раз розберемо тему інтерфейсів в PHP. Якщо хтось вивчав C ++, то ті знають, що там існує множинне спадкування. Тобто, коли один клас успадковує відразу кілька інших класів. На мій погляд, це створює страшну плутанину. Тому було прийнято рішення: в PHP відмовитися від множинного спадкоємства. Однак, компенсувати це якось було треба, і тоді придумали інтерфейси. До речі, ті, хто знає Java, зрозуміють, про що йде мова, так як там теж немає множинного спадкоємства, але є інтерфейси. А про те, як використовувати інтерфейси в PHP я розповім в цій статті.

інтерфейс - це набір методів без реалізації. Тобто в інтерфейс входять методи з ім`ям і вхідними параметрами. Більше нічого нема. Будь-клас, який реалізує (зверніть увагу, що не буде наслідувати, а реалізує) Даний інтерфейс, зобов`язаний реалізувати кожен метод. Щоб стало ще зрозуміліше, хочеться привести аналог з життя. Кожна людина виконує певні функції. Наприклад, вчиться, працює, прибирає квартиру, готує їжу і займається іншими очевидними речами. Можете вважати, що інтерфейс - це область занять, наприклад, навчання, робота, прибирання квартири, приготування їжі. А методи інтерфейсу - це вже конкретне завдання в цій галузі. Наприклад, у прибиранні квартири можуть бути такі методи: мийка посуду, мийка підлоги, винесення сміття і інші. У готуванні їжі можуть бути такі методи: приготування борщу, приготування м`яса, чистка картоплі та інше. Сподіваюся, думка Ви вловили.

Тобто інтерфейси - це можливість визначити рід завдань для об`єкта, які він повинен реалізовувати.

Давайте розберемо простий приклад, створивши наступний інтерфейс (в файлі "fileinterface.php"):

lt ;?php
interfaceFileInterface{
publicfunction readFromFile($ path) -
publicfunction writeToFile($ path, $ some) -
}
?gt;



Тобто даний інтерфейс просто описує роботу з файлом. Відповідно, ті об`єкти, які повинні читати з файлу і записувати різні дані, зобов`язані реалізувати інтерфейс "FileInterface".

Створимо ще один інтерфейс (в файлі "client.php"):

lt ;?php
interfaceClient{
publicfunction buy ($ id) -
publicfunction repayment($ id) -
}
?gt;

Даний інтерфейс реалізує функцію клієнта, тобто можна щось купити (задається $ id), А також щось повернути назад (теж задається по $ id).




І, нарешті, клас, який реалізує ці інтерфейси, тобто клас у якого області завдань дві - бути клієнтом і працювати з файлом (файл "shop.php"):

lt ;?php
require_once
"Fileinterface.php"-
require_once
"Client.php"-
classShopimplementsFileInterface,Client{
publicfunction readFromFile($ path){
echo
"Прочитуємо з файлу і повертаємо рядок
"
-
}
publicfunction writeToFile($ path, $ some){
echo
"Записуємо в файл дані $ some
"
-
}
publicfunction buy($ id){
echo
"Дякую за покупку
"
-
$ this
-gt;writeToFile("Data.db","Був куплений товар $ id") -
}
publicfunction repayment($ id){
$ this
-gt;readFromFile("Data.db") -
// Тут, припустимо, перевірка того, чи була насправді купівля товару $ id
$ this
-gt;writeToFile("Data.db","Було зроблено повернення товару $ id") -
}
}
?gt;

Думаю, тут все прозоро, але просто хочеться додати, що реалізація повинна бути для кожного методу кожного інтерфейсу. Вона може бути порожньою, але тим не менше. Про це не забувайте.

І, нарешті, простий приклад, який використовує клас Shop:

lt ;?php
require_once
"Shop.php"-
$ shop
=newShop() -
$ shop
-gt;buy(5) -
$ shop
-gt;repayment(5) -
?gt;

Зрозуміло, інші класи, що реалізують дані інтерфейси можуть зовсім по-іншому обробляти їх методи.

Відео: [ООП курс] Інтерфейс

Ось і все, що хотілося сказати по інтерфейсів в PHP.

До наступної статті!

Поділися в соціальних мережах:

Схожі
Підключення жорсткого диска від ноутбука до комп`ютераПідключення жорсткого диска від ноутбука до комп`ютера
Абстрактні класи в phpАбстрактні класи в php
Метод tostring () в phpМетод tostring () в php
Reflection api. Reflectionclass.Reflection api. Reflectionclass.
Створення класу в phpСтворення класу в php
Інтерфейси відеокартІнтерфейси відеокарт
Як створити движок для сайтуЯк створити движок для сайту
Reflection api. Reflectionobject.Reflection api. Reflectionobject.
Клас для роботи з базою данихКлас для роботи з базою даних
Шаблон проектування адаптер. Pattern adapter.Шаблон проектування адаптер. Pattern adapter.
» » Інтерфейси в php