2009-02-14 5 views
0

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

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

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

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

ответ

2

Это очень похоже на this question.

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

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

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

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

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

0

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

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

Cake PHP

Solar PHP

0

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

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

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

+0

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