Введение в шаблоны проектирования в PHP
Опубликовано: 2020-04-14Шаблоны проектирования PHP оказались чрезвычайно полезными для разработчиков и решают основные проблемы. Чтобы писать эффективный код, разработчики должны следовать лучшим практикам. Шаблоны проектирования PHP - это концепция объектно-ориентированного программирования (ООП), которая теперь также используется в проектах Drupal 8. Благодаря тому, что Drupal 8 использует современные концепции PHP и ООП, можно использовать шаблоны проектирования для более чистого и надежного программирования.

Что такое шаблоны проектирования в PHP?
В разработке программного обеспечения шаблон проектирования - это общее повторяемое решение часто встречающейся проблемы в разработке программного обеспечения. Хорошие объектно-ориентированные проекты должны быть многоразовыми, поддерживаемыми и расширяемыми, и шаблоны проектирования в PHP могут быть очень полезны в этом. Это не только помогает в решении проблем, но и подразумевает оптимальный способ решения общих проблем.
Преимущества использования шаблонов проектирования PHP
Основные преимущества шаблонов проектирования в PHP:
- Паттерны PHP Design помогают в решении повторяющихся проблем, возникающих во время разработки.
- Использование шаблонов проектирования в PHP делает взаимодействие между дизайнерами более эффективным.
- Другим разработчикам, которые смотрят на ваш код, не придется изо всех сил понимать, поскольку код хорошо структурирован с использованием шаблонов проектирования.
- Следование передовым практикам помогает создавать более надежное программное обеспечение
- Это помогает ускорить и упростить разработку
Широко используемые шаблоны проектирования в PHP
Шаблоны проектирования можно использовать в различных ситуациях для решения схожих проблем. Существует около 23 паттернов дизайна, которые можно условно разделить на три типа паттернов проектирования - творческие, структурные и поведенческие.
Шаблоны создания: шаблоны проектирования, которые используются в механизмах создания объектов для создания объектов, которые могут быть отделены от системы, в которой они реализованы.
Структурные шаблоны: это упрощает дизайн, определяя простые способы реализации взаимосвязей между объектами.
Поведенческие шаблоны: они используются для управления отношениями, обязанностями и алгоритмами между объектами.
Заводской образец
Заводской шаблон используется для создания объекта. Правильно - строить объект, а не создавать объект. Когда мы строим объект, мы сначала создаем его, а затем инициализируем. Обычно это требует применения определенной логики и выполнения нескольких шагов. При этом имеет смысл собрать все это в одном месте и повторно использовать его всякий раз, когда вам нужно создать новый объект таким же образом. По сути, это использование фабричного паттерна.
Отличная идея - иметь интерфейс для нашей фабрики и полагаться на него, а не на конкретную фабрику.
интерфейс FamilyFactoryInterface { общественный функция create (): Семья } |
Затем реализуйте фабричный интерфейс со следующим классом:
класс СемьяФабрика орудия FamilyFactoryInterface { общественный функция create (): Family { $ family = новая семья (); // инициализируем вашу семью вернуть $ family; } } |
Шаблон адаптера
В Адаптере Design Pattern, класс преобразует интерфейс одного класса к другому класса этого примеру у нас есть класс учебника , который имеет GetTitle () и getAuthor () методу. Клиент ожидает использования метода getTitleAndAuthor (). Чтобы «адаптировать» SimpleBook к demoAdapter, у нас есть класс адаптера BookAdapter , который принимает экземпляр TextBook и использует методы TextBook getTitle () и getAuthor () в своем собственном методе getTitleAndAuthor.
<? php частный $ title; $ this -> author = $ author_in; функция getTitle () { |
Шаблон синглтона PHP
Чтобы ограничить создание экземпляра класса одним объектом, в PHP используется одноэлементный шаблон. Это может быть полезно, когда в системе требуется только один объект. При разработке веб-приложений имеет смысл разрешить доступ только к одному экземпляру определенного класса. Чтобы предотвратить явное создание объектов из класса шаблона Singleton, используется частный конструктор.
<? php ![]() |
Шаблон наблюдателя в PHP
Паттерн PHP Observer используется для предупреждения остальной системы об определенных событиях в определенных местах.
Например, если нам нужно создать Театр, чтобы показывать фильмы критикам. Мы определяем класс Theater с помощью текущего метода. Перед тем, как представить фильм, мы хотим разослать сообщения на мобильные телефоны критиков. Затем, в середине фильма, мы хотим остановить фильм на 5 минут, чтобы дать критикам перерыв. Наконец, после окончания фильма мы хотим попросить критиков оставить свой отзыв. Итак, в шаблоне наблюдателя для PHP объект наблюдателя получает уведомление только при изменении статуса.
Вот как выглядит код -
класс Theater { |
Шаблон декоратора для PHP
Шаблон декоратора используется, когда вы хотите изменить характер объекта во время выполнения и тем самым уменьшить ненужные наследования и количество классов. Что ж, это можно объяснить на примерах. Допустим, у нас есть классы «Диван» и «Кровать», и оба они реализуют SleeperInterface.
интерфейс SleeprInterface { |
И диваны, и кровати ведут себя одинаково во время сна. Теперь нам нужны другие диваны и кровати с дополнительными функциями, которые будут сообщать пользователям об отслеживании сна, когда они спят на диванах или кроватях. С помощью наследования мы можем решить эту проблему следующим образом:
класс SmartSofa расширяет Диван { |
Всего у нас 4 класса. Однако решить эту проблему с 3-мя классами мы смогли только с помощью шаблона Decorator. Вот как:
класс SmartSleeper орудия SleeperInterface { |
Здесь мы представили новый тип спящего, который действует как прокси, но с дополнительными функциями поверх него.
Использование шаблонов дизайна в Drupal 8
Хотя существует множество шаблонов проектирования, уже установленных в Drupal до Drupal 8, теперь Drupal 8 состоит из множества шаблонов, которые ранее были недоступны. Некоторые из этих новых шаблонов полностью заменяют некоторые старые, в то время как другие вводят некоторые новые функции в Drupal 8.
Шаблоны проектирования, используемые в Drupal 8, включают:
- Шаблон объектно-ориентированного программирования (ООП)
- Инъекции зависимостей
- Заводской образец
- Шаблон Singleton
ООП - это на самом деле не единый шаблон, а полностью радикальный способ концептуализации и структурирования кода, который выходит далеко за рамки простых шаблонов проектирования. Это основа для многих популярных шаблонов проектирования программного обеспечения, используемых сегодня, включая те, которые используются в Drupal 8. Он был представлен в Drupal 7, но широко не использовался и не требовался. В Drupal 8 сейчас другая ситуация, он широко используется, и он необходим.
Внедрение зависимости
Внедрение зависимостей - это шаблон проектирования программного обеспечения, который позволит вам удалить жестко запрограммированные зависимости, а также даст возможность изменять их во время выполнения или во время компиляции. Добавить инъекцию зависимостей легко, и она не вмешивается в ваш существующий код. Drupal 8 представил концепцию сервисов, чтобы отделить многоразовые функции. core.services.yml - это пример внедрения зависимостей в Drupal 8. Мы уже обсуждали Factory Pattern и Singleton Pattern в PHP выше.

