Коли в php використовувати інтерфейси, а коли абстрактні класи

Як пишуть розумні люди (Шілдт, Троелсен) в своїх розумних книжках, інтерфейс визначає функціональні можливості, поведінка - «що саме слід робити, але не як це робити» (Г.Шілдт, Повне керівництво C #). В абстрактному класі «визначається лише сама загальна форма для всіх його похідних класів, а наповнення її деталями надається кожному з цих класів» (там же).

Коли в php використовувати інтерфейси, а коли абстрактні класи

Fullstack Web Developer

Наприклад, потрібно написати клас для роботи з кешем.

У нас є клас Cache, який буде робити всю брудну роботу. Він в свою чергу буде використовувати бібліотеку під певний тип кешу (memcached, eaccelerator.). Для узгодженості, бібліотека повинна реалізувати інтерфейс cacheInterface, щоб клас Cache міг нормально працювати. Ось невеликий приклад.

Інтерфейс для бібліотеки:

Коли в php використовувати інтерфейси, а коли абстрактні класи

Прошу вибачення, у мене заглючило клаву. Зараз доповню повідомлення.

Коли в php використовувати інтерфейси, а коли абстрактні класи

Інтерфейс бібліотеки: pastebin.com/JpzRak2j
Бібліотека для memcache: pastebin.com/V1TwJrQB. ось для чого потрібні connect () і disconnect (). Хоча для eaccelerator і т.п. вони не потрібні, там можна писати return true;

Абстрактний клас зручно (принаймні мені) використовувати при написанні классвов для роботи з базою даних, з огляду на те, що абстрактний клас дозволяє використовувати protected властивості.

Сподіваюся, що пояснив доступно.

Схожі статті