Каковы основные компоненты / слои приложения PHP? - PullRequest
1 голос
/ 14 февраля 2009

Каковы основные компоненты приложения PHP? Я придумал это:

  1. База данных
  2. HTML-шаблоны
  3. Сессия / Печенье / Authentication
  4. Пользовательский ввод ($ _GET или $ _POST или сегменты URL)

Это основные компоненты или есть другие?

Причина, по которой я спрашиваю это, состоит в том, чтобы я мог поместить каждый «Объект» в свой собственный класс, не беспокоясь о том, как это будет технически осуществимо. Например, у меня может быть класс Post, который позволяет добавлять сообщения в блог, не беспокоясь о том, как он будет вписываться в остальную часть языка system / php и т. Д.

Ответы [ 3 ]

2 голосов
/ 14 февраля 2009

Это звучит очень похоже на этот вопрос .

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

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

Я вижу два вопроса в этом вопросе, которые вы опубликовали. Во-первых, каковы общие архитектурные составляющие сайта. Как правило, у вас будут эти три в некотором проявлении:

  1. База данных и уровень взаимодействия с базой данных
  2. Контроллер - обрабатывает $ _GET и $ _POST (запрос) и присваивает содержимое представлению и в конечном итоге отображает его.
  3. Представление - должно содержать только HTML и базовый код, такой как циклы для перебора коллекций и вывода переменных.

Второй вопрос, который я вижу, - где разместить обработку конкретного бизнес-объекта в приложении. Здесь обсуждение становится немного более сложным, поскольку я предполагаю, что вам нужно взаимодействовать с сообщениями как в виде бизнес-объектов (в домене), так и в виде строк в таблице базы данных. Обе эти проблемы могут быть включены в один и тот же класс с использованием шаблона, называемого Active Record, который был популяризирован Ruby on Rails. Однако, в зависимости от сложности приложения и базы данных, вы можете рассмотреть возможность отделения бизнес-логики от взаимодействия с базой данных путем создания одного класса Post, который действует как слой взаимодействия с базой данных, и другого класса Post, который содержит всю бизнес-логику.

0 голосов
/ 14 февраля 2009

Звучит так, будто вы хотите какую-то платформу модель-представление-контроллер. Структура, следующая за этим шаблоном, инкапсулирует всю работу с БД в модели, бизнес-логику в контроллеры, а презентацию / шаблоны в представления. На ум приходят две рамки:

  1. CodeIgniter (личный фаворит)
  2. Торт PHP

Если вы пойдете по этому пути, вы обнаружите, что платформы MVC помогут вам разделить данные, как вы описываете. Кроме того, эти системы, как правило, имеют множество плагинов или встроенных функций, которые будут дополнительно инкапсулировать такие вещи, как аутентификация, управление сеансами, отправка / получение данных и т. Д.

0 голосов
/ 14 февраля 2009

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

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

Торт PHP

Солнечный PHP

...