Объектно-ориентированный дизайн для PHP-приложения - PullRequest
5 голосов
/ 25 ноября 2008

Для нашего школьного проекта нам поручено определить проектный документ, описывающий архитектуру приложения PHP.

Мы можем решить, что включить в документ.

Наш профессор предложил множество (UML) диаграмм.

Он также попросил нас рассмотреть диаграммы классов, но с осторожностью, поскольку PHP не является полностью объектно-ориентированным.

Мой вопрос: Возможен ли доменно-ориентированный объектно-ориентированный дизайн для приложения PHP? Что следует учитывать при выполнении ОО в PHP? Каковы плюсы и минусы? Любые полезные ресурсы по ОО в PHP и лучшие практики PHP?

Ответы [ 4 ]

8 голосов
/ 25 ноября 2008

ИМХО, довольно сложно описать архитектуру любого приложения, не зная, что приложение должно делать. Все приложения (PHP или иные) любой сложности выглядят по-разному.

Во-вторых, PHP5 предоставляет вам классы / объекты и обычное множество OO-gubbings - поэтому описывать его как «не полностью объектно-ориентированный» вводит в заблуждение, я думаю. Если вы имеете в виду, что можете использовать процедурный подход, не ограничиваясь объектами, тогда да, но если вы хотите, чтобы все было объектом, то это ваш выбор.

Возможно ли использование DDD для PHP? Да, конечно. Особый подход к архитектуре обычно не зависит от технологии. Лучшие практики, плюсы и минусы ОО-дизайна применимы к большинству языков - PHP позволяет вам самим решать, как структурировать ваш код.

Вы можете найти этот Best Practices доклад с сайта PHP полезным;)

2 голосов
/ 25 ноября 2008

Большинство используемых в настоящее время ОО-языков не являются полностью объектно-ориентированными. У каждого языка есть свои особенности и ошибки. Так что я бы сказал, что PHP достаточно для большинства простых проектов. Я работал над Zend Framework, который разработан как библиотека классов OO, с шаблонами проектирования и тому подобным.

Одним из предложений для PHP является то, что вы должны обратить внимание на его SPL компонент, который предоставляет вам интерфейсы для многих базовых классов.

Я думаю, что это довольно слабо, если ваш учитель сказал: «Поместите все, что вы хотите в проектный документ, диаграммы UML прекрасны». Проектная документация является важной, но крайне недооцененной частью разработки программного обеспечения. Ваш учитель должен показывать вам примеры или шаблоны для хорошего дизайна документа.

2 голосов
/ 25 ноября 2008

PHP в настоящее время может быть описан как полностью объектно-ориентированный по выбору. Он предлагает все, что вам нужно, но вы не обязаны писать код OO.

Есть две книги, которые мне очень помогли в понимании принципов ОО в отношении PHP:

  • PHP в действии (Мэннинг)
  • Zend Учебное пособие для PHP5 (Zend)
0 голосов
/ 25 ноября 2008

ОО - это прежде всего методология дизайна.

В качестве таковой возможно придумать дизайн ОО, который может быть реализован в процедурных языках. Я видел, как это делается для проектов C и COBOL. И это убедило меня, что почти все преимущества ОО связаны с дизайном, а НЕ с языковой реализацией.

Так что да, вы можете придумать дизайн ОО с большим количеством UML (диаграммы классов, варианты использования, плавательные дорожки и т. Д.), И вы можете реализовать его в php (используя классы или нет).

В любом случае php - это расширенный набор OO, так что если вы ограничиваете себя занятиями и функции внутри классов (== методов) у вас есть реализация OO.

Единственное, чего не хватает, это определения интерфейса, но это очень мало смысл определять интерфейсы на языке с такой (не) ограниченной проверкой типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...