Методи перерахувань

Перерахування (як чисті, і типизированные) можуть містити методи і можуть реалізовувати інтерфейси. Якщо перерахування реалізує інтерфейс, то будь-яка перевірка типу цього інтерфейсу також прийме всі варіанти цього перерахування.

Loading...

У цьому прикладі кожен із чотирьох екземплярів Suitимеет два метода:color()иshape(). У коді, що викликає, і при перевірці типів екземпляри перерахування поводяться точно так само, як і будь-який інший екземпляр об'єкта.

У типізованих переліках оголошення інтерфейсу відбувається після оголошення типу перерахунку.

Loading...

Переменная$this визначено всередині методу і посилається на екземпляр варіанта.

Складність методів у перерахування не обмежена, але на практиці методи перерахувань частіше повертають статичне значення або результат обробки змінної $this виразом matchщоб результати обробки окремих екземплярів перерахування відрізнялися.

Зверніть увагу, у цьому прикладі кращою практикою побудови даних було б визначити тип перерахування SuitColor зі значеннями Red та Black і повертати їх замість рядкових літералів. Однак це ускладнило б приклад.

Ієрархія в прикладі логічно схожа на наступну структуру класів (хоча це не справжній код, що виконується):

Loading...

У переліках дозволено оголошувати загальнодоступні, закриті та захищені методи, хоча на практиці закриті та захищені методи еквівалентні, оскільки успадкування не дозволене.