Архитектура очень сложных приложений PHP? - PullRequest
6 голосов
/ 18 ноября 2009

Я хочу знать, какие стратегии php-архитектуры используют разработчики в сложных php-приложениях. До сих пор я знаю структуру mvc, которая состоит из моделей, представлений и контроллера (и плагинов контроллера, которые выполняют общие задачи, такие как контроллер доступа пользователя). Я знаю несколько хороших php-фреймворков, которые облегчают некоторые общие вещи. Но проблема начинается, когда я говорю об огромных и сложных php-приложениях. потому что в этих приложениях есть много вещей, которые нужно сделать, или много думать, чтобы проверить, поэтому я не могу решить, какой код должен быть где.

Подумайте о приложении magento, это очень большое приложение. Когда я рассматриваю исходный код приложения, я не могу понять стратегию проектирования. Я знаю, что есть несколько идеальных стратегий проектирования, которые могут легко обрабатывать очень большие php-приложения, потому что они не могут создать такое огромное приложение с очень слабой стратегией дизайна. Стратегия дизайна должна поддерживать больше, чем вы хотите, чтобы вы могли улучшить свой код и приложение легко

Подводя итог, я хочу, как я могу создавать большие приложения. Теперь стратегии разработки, которые я использую в своих приложениях, ограничивают меня, поэтому я не могу создавать более сложные приложения. я хочу знать, какая стратегия проектирования может обрабатывать сложные приложения.

Я знаю, что это очень абстрактный вопрос, но это потому, что теперь мой php-фон происходит от любительского хобби, а не от академического. Я хочу сделать больше, но я нахожусь в каком-то месте, где я не могу сделать еще один шаг, потому что я не могу найти более сложную информацию о кодировании. В общем, я хочу узнать о стратегиях проектирования для сложных php-приложений, таких как magento.

Может быть, стратегии дизайна, которые я знаю (MVC, Framework CI Cake ...) могут обрабатывать более сложные приложения, чем я думаю ..

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

Ответы [ 7 ]

7 голосов
/ 18 ноября 2009

Я полагаю, что отчасти ваша проблема может заключаться в том, что создание корпоративных приложений является проблемой на любом языке, а шаблоны проектирования, которые могут быть реализованы, фактически не зависят от языка.

Я настоятельно рекомендую вам ознакомиться с паттернами архитектуры корпоративных приложений от Мартина Фаулера. Это основополагающая работа для любых других книг, которые вы можете позже выбрать и которые охватывают те же понятия в формате, специфичном для языка, и если вы хотите действительно понять, что требуется для создания надежных, масштабируемых приложений в Интернете, то вам понадобится ознакомиться с этой книгой.

Очень распространенная и популярная стратегия проектирования веб-приложений в настоящее время - это парадигма Model-View-Controller. Это полностью связано с разделением проблем в вашем приложении, так что вы не смешиваете код доступа к базе данных с выводом html.

Для довольно хорошего подхода к теме я бы посоветовал вам посмотреть здесь (специфично для Zend Framework, но оно хорошо охватывает общую тему) и здесь для обсуждения конкретно моделей , Или, если вы хотите взглянуть на более обобщенный учебник по PHP MVC, у Расмуса Лердорфа есть one .

В дополнение к этому (и снова вы можете узнать это из PofEAA Мартина Фаулера) вам нужно будет изучить объектно-реляционное отображение, каковы сильные и слабые стороны различных шаблонов проектирования.

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

2 голосов
/ 18 ноября 2009

Какие рамки вы изучили? Изучите Symfony, Zend Framework и CakePHP, если вы еще этого не сделали. И под исследованием я имею в виду на самом деле писать приложения среднего размера с использованием этих структур. Простого чтения кода часто недостаточно, чтобы понять, как он работает. Вам часто приходится использовать его и пытаться его изменить.

Вы также можете обратиться к книге PHP 5 Objects Patterns and Practice за некоторыми идеями стратегий проектирования, которые вы можете применить к своему приложению. Вы также можете узнать немного больше, изучая фреймворки, написанные на других языках. Например, Ruby on Rails вдохновил дизайнеров многих PHP-фреймворков.

1 голос
/ 18 ноября 2009

Если вы еще этого не сделали, вам следует изучить объектно-ориентированное программирование. Есть действительно хороший урок об этом здесь . Я думаю, что это, пожалуй, самая важная вещь, которую делают большие веб-приложения, что не обязательно интуитивно понятно любителю (включая меня). Хитрость в средах MVC, таких как Code Igniter, заключается в создании серии классов (или объектов) в виде моделей или библиотек.

1 голос
/ 18 ноября 2009

Это действительно очень абстрактный вопрос, и «очень сложный» не очень специфичен. Когда я слышу, как люди говорят о «сложных» приложениях, я ассоциирую это с

а) Кто-то использует сложную архитектуру для простой Задачи. Например. используя каждый шаблон дизайна и рамки, которые звучали круто.

б) Кто-то пытался объединить тонны совершенно разных вариантов использования в исторически сложившееся приложение, создавая и используя собственные и недокументированные интерфейсы и объединяя все как можно теснее вместе. К сожалению, МОЖЕТ создавать огромные приложения с плохой стратегией проектирования, и это делает их сложными.

c) Устаревшие системы и интеграция с унаследованными системами (хорошо, см. Б)

Magento может быть большим приложением, но базовая платформа по-прежнему Zend Framework , в основном ее MVC-часть. Таким образом, чтение документации Zend_Framework также поможет вам лучше понять архитектуру Magentos (я не буду рекомендовать ее с другой стороны, пытаясь углубиться в Zend Framework через исходный код Magento). Я бы порекомендовал начать собственное создание большего приложения с помощью одной из платформ MVC, потому что это лучший способ изучить архитектуру и ее преимущества, а также ограничения там.

0 голосов
/ 29 октября 2013

Я попытался понять вашу проблему и обнаружил, что архитектура magento очень мощная, но сложная. Я получил решение от Zendfox , это фреймворк для веб-приложений, подходящий для разработки небольших и больших приложений Он имеет очень симпатичную прикладную архитектуру, которой можно очень легко управлять. Также имеется разработчик модулей для создания пользовательских модулей для Zendfox в течение нескольких минут на основе мастера.

Итак, взгляните на: http://www.zendfox.com

0 голосов
/ 07 декабря 2009
0 голосов
/ 18 ноября 2009

Что ж, даже если ваш вопрос касается только PHP ... Если вы обрабатываете статический контент, например изображения, с помощью PHP, это приведет к снижению производительности независимо от того, используете вы MVC или нет. Вы должны использовать передний конец как nginx для таких вещей.

посмотрите на http://highscalability.com/ реальных историй из реальной жизни!

Также обратите внимание на NoSQL.

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