ООП и паттерны Flashcards
Основные принципы ООП - инкапсуляция, наследование и полиморфизм. Как
их можно использовать?
- Инкапсуляция - принцип, когда класс скрывает в себе логику работы с данными и сами данные, выставляя наружу только публичные методы.
(ограничение доступа одних компонентов к другим)
Делая свойство приватным, предотвращаем изменение его значения не через set метод.
- Наследование - принцип, при котором один класс(наследник) переиспользует все поля и методы другого класса(суперкласс).
Применить можно для однотипных сущностей, наследуясь от абстрактной.
- Полиморфизм - принцип, предполагающий взаимозаменяемость объектов с одинаковым интерфейсом
Язык PHP поддерживает полиморфизм в том смысле, что позволяет использовать вместо экземпляров родительского класса экземпляры подкласса.
- Что такое namespace и для чего он служит? Как ими пользоваться?
Один из способов инкапсуляции элементов.
Делает разрешимыми конфликты имен между вашим кодом и внутренними или сторонними классами.
Хотя любой корректный PHP-код может находиться внутри пространства имен, только классы (включая абстрактные и трейты), интерфейсы, функции и константы зависят от него.
Пространства имен объявляются с помощью зарезервированного слова namespace. Файл, содержащий пространство имен, должен содержать его объявление в начале перед любым другим кодом, кроме зарезервированного слова declare.
use импорт классов из других namespace
as создание псевдонима
- Что такое абстрактные классы и интерфейсы? Зачем они нужны?
Абстрактный класс предстовляет собой каркас для наследования других сущностей, у него не может быть объектов, все абстрактные методы должны быть определены в дочерних классах.
Интерфейс - класс, по сути являющийся контрактом, который должны выполнить реализующие его классы, преобретая тем самым взаимозаменяемость, содержит только сигнатуры методов.
Интерфейс описывает поведение.
a. В каких случаях следует использовать интерфейсы?
Интерфейсы стоит создавать когда есть общая задача и несколько вариантов ее решения, применяемых в зависимости от ситуации
b. Что такое трейты? Для чего они нужны?
Трейты - механиз обеспечения повторного использования кода в языках с поддержкой только одиночного наследования.
Трейты похожи на абстрактные классы. Они реализуют какую-то общую функциональность и с ними нельзя работать напрямую. Единственный способ использовать их – включение в другие классы.
- Что такое магические методы? Для чего они нужны? Примеры.
Зарезервированные методы, начинающиеся с двойного подчеркивания, могут вызываться при совершении какого-то действия автоматически.
__get, __set, __isset, __unset
Они позволяют определить, каким образом будут взаимодействовать извне со свойствами, объявленными с модификатором доступа private или protected, либо вообще отсутствующими у объекта.
Метод __construct() автоматически вызывается, когда был создан экземпляр объекта. В нем вы можете задать начальные свойства объекта или установить зависимости.