PHP 5 about PHP 5 старт PHP 5 установка PHP 5 синтаксис PHP 5 змінні PHP 5 echo і print PHP 5 типи даних PHP 5 strings PHP 5 константи PHP 5 оператори PHP 5 if...else...elseif PHP 5 switch PHP 5 цикл while PHP 5 for і foreach PHP 5 функції PHP 5 масиви PHP 5 сортування масивів PHP 5 superglobals PHP 5 форми input PHP 5 форми обробка PHP 5 форми - обов'язкові поля PHP 5 форми - перевірка електронної пошти і URL РНР 5 форми заповнення PHP 5 багатовимірні масиви PHP 5 час і дата PHP 5 include PHP 5 файли обробка PHP 5 файли Open/Read/Close PHP 5 файли створення / запис PHP 5 файли завантаження PHP MySQL бази даних PHP MySQL Підключення PHP MySQL Створення бази даних PHP MySQL Створення таблиці PHP MySQL вставка даних PHP MySQL Отримання ідентифікатора останнього доданого запису PHP MySQL вставка кількох записів PHP MySQL Підготовлені вирази PHP MySQL відображення даних з таблиці PHP MySQL Видалення даних PHP MySQL оновлення даних PHP MySQL обмежити вибірку даних PHP регулярні вирази 1 PHP регулярні вирази 2 PHP регулярні вирази 3 PHP регулярні вирази 4 PHP ООП PHP ООП class PHP ООП модифікатори доступу PHP ООП extends PHP ООП статичні методи і властивості, константи PHP ООП abstract PHP ООП interface PHP альтернативний синтаксис керуючих конструкцій

PHP ООП interface


Інтерфейсами ( interface ) є абстрактні класи, що містять тільки абстрактні методи і не мають ніяких властивостей.
Основна відмінність інтерфейсів від абстрактних класів полягає в тому, що в PHP 5 клас не може бути породжений від декількох класів, в тому числі і абстрактних, але зате може бути створений на основі будь-якого числа інтерфейсів.
При цьому в інтерфейсі методи оголошуються ключовим словом function без зазначення будь-яких специфікаторів, в тому числі і abstract .

Приклад розширення класів з допомогою інтерфейсів

<?php

interface Int1
{
    function func1();
}

interface Int2
{
    function func2();
    function func3();
}

class MyClass implements Int1, Int2
{
    public function func1()
    {
        echo 1;
    }

    public function func2()
    {
        echo 2;
    }

    public function func3()
    {
        echo 3;
    }
}

$obj = new MyClass();

$obj->func1();      // # 1
$obj->func2();      // # 2
$obj->func3();      // # 3
?>

Таким чином, хоча множинне спадкування (multiple inheritance) і не підтримується в PHP 5, проте розробники отримали реальну можливість створювати класи на основі окремо описаних інтерфейсів.

додатково:

Інтерфейси об'єктів дозволяють програмісту створювати код, який вказує, які методи клас повинен реалізувати але не визначаючи при цьому, як ці методи виконуються.
Інтерфейси визначаються за допомогою ключового слова interface , так само, як звичайні класи, але без будь-яких методів містять опис їх дій.
Всі методи, оголошені в інтерфейсі повинні бути відкритими.


implements

Для реалізації інтерфейсу використовується оператор implements . Всі методи в інтерфейсі повинні бути реалізовані в рамках класу; спроба реалізувати ці методи поза класом призведе до фатальної помилки. Клас може бути реалізований (породжений) більш ніж одним інтерфейсом при цьому кожен інтерфейс відділяється один від одного комами.

Примітка:

  • Клас не може реалізувати два інтерфейси, в яких функції (методи) мають однакові імена, так як це призведе до неоднозначності.
  • Інтерфейси можуть бути розширені як класи з використанням оператора extends.
  • Клас, який реалізує інтерфейс повинен використовувати ті ж підписи методів, які визначені в інтерфейсі. Невиконання цієї вимоги призведе до фатальної помилки.

Приклад:  інтерфейси з константами 

<?php

interface a
{
    const b = 'Interface constant';
}

// Prints: Interface constant
echo a::b;


// This will however not work because its not allowed to
// override constants.
class b implements a
{
    const b = 'Class constant';
}

?>

 


Наш партнер:
beta test mp3 playlist downloader