Архитектура очень сложных php приложений?

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

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

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

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

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

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

7 ответов


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

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

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

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

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

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


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

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


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

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

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

c) устаревшие системы и устаревшая системная интеграция (ok см. b)

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


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


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

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

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



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

Так что взгляните на: http://www.zendfox.com