Я пытаюсь улучшить свои знания ООП в PHP и изучать абстрактные классы и интерфейсы.Real World Примеры расширенных возможностей OOP для PHP
То, что я узнал
- Они оба класса, которые не могут быть воплощенные себя, но Olny может быть расширен (реализован в случае интерфейсов)
- Абстрактные классы обеспечивают методы и свойства для других классов которые расширяют их.
- Если класс использует абстрактный метод, то сам класс также должен быть абстрактным.
- Если абстрактный метод определен в абстрактном классе, все дочерние классы должны определять детали этого метода. Методы, не определенные как абстрактные, могут использоваться так же, как и обычные методы.
- Интерфейсы определяют, какие методы должен выполнять класс, который его реализует. Функциональность методов не определена в интерфейсе, интерфейс просто предлагает список методов, которые должны быть включены в дочерний класс.
- Интерфейс не задает никаких свойств.
- Классы могут реализовать столько интерфейсов, сколько они хотят, но они должны определить метод для каждого из интерфейсов, которые они реализуют
Я думаю, что охватывает основы. Не стесняйтесь добавлять к этому, если вы считаете, что я что-то пропустил.
Что бы я хотел знать, это если есть примеры реальных реализаций этих классов, особенно класс интерфейса. Кто-нибудь знает какие-либо приложения с открытым исходным кодом, которые используют их, которые я могу просматривать, чтобы лучше понять их и посмотреть, где и когда они используются эффективно? Я столкнулся с книжными примерами, в которых используются животные, которые не демонстрируют важность этих классов.
Кроме того, ZF2 работает в процессе wiki: http://framework.zend.com/wiki/display/ZFDEV2 – joksnet
@ Gordon: посмотрите пример: http://www.php.net/manual/en /class.splheap.php – vartec
@Gordon, отредактировал ответ – vartec