Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Создайте структуру PHP5 - часть 2

by
Difficulty:IntermediateLength:LongLanguages:

Russian (Pусский) translation by Svetlana (you can also view the original English article)

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




MVC: настроить структуру

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

Итак, что такое MVC? MVC - это шаблон проектирования (как и шаблоны Singleton и Registry, которые мы рассмотрели в первой части), он обозначает Model View Controller, и цель этого шаблона состоит в том, чтобы отделить бизнес-логику, действия пользовательского интерфейса и пользовательский интерфейс от друг друга. Хотя мы пока не будем ничего делать с нашими моделями и контроллерами, давайте обновим структуру папок наших структур, добавив в них папку «models». Модель будет содержать основную бизнес-логику, а контроллер будет заниматься взаимодействием с пользователем (например, отправкой данных, таких как комментарий). NB: Наш __ функция автогруза не должна быть изменена.

Обработчик базы данных

использующих PHP, также используют механизм базы данных, такой как MySQL. Если мы сохраним все функции, связанные с базой данных, в одном месте, то (теоретически) мы сможем легко изменить используемый движок базы данных. Мы также можем упростить определенные операции, такие как вставка записей, обновление записей или удаление записей из базы данных. Это также может облегчить работу с несколькими подключениями к базе данных.

Итак ... что должен делать наш обработчик базы данных:

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

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

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

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

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

Как мы можем расширить этот класс?

  • Полная абстракция 
  • Используйте наследование, создайте интерфейс и наследуйте от него классы базы данных, каждый для разных механизмов базы данных
  • Сохраняйте идентификаторы соединения вместе с запросом при кэшировании запросов
  • Улучшение санации данных в зависимости от типа данных, которые мы хотим санировать

Диспетчер шаблонов 

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

Чтобы упростить задачу, мы будем использовать класс страницы для содержания, связанного со страницей, это также облегчит нам его расширение и добавление функций к нему позже. Менеджер шаблонов будет управлять этим объектом.

Итак, что именно делает этот класс?

Создает наш объект страницы и основывает его на файлах шаблонов. Объект страницы содержит содержимое и информацию, необходимые для создания HTML-кода страницы. Затем мы собираем buildFromTemplate ('templatefile.tpl.php', 'templatefile2.tpl.php'), чтобы получить начальный контент для нашей страницы, этот метод принимает любое количество файлов шаблонов в качестве аргументов,и объединяет их по порядку, полезно для шаблонов заголовка, содержимого и нижнего колонтитула.

Управляет контентом, связанным со страницей, помогая объекту страницы поддерживать запись данных, подлежащих замене на странице, а также дополнительные биты шаблона, которые необходимо включить в страницу (addTemplateBit ('userbar', 'usertoolsbar.tpl.php) «)).

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

Файл шаблона должен отмечать внутри себя, где должен быть извлечен кэшированный запрос и заменены данные из запроса. Когда менеджер шаблонов встречает тег для замены, являющийся запросом, он получает часть страницы, на которой ему нужно пройти итерацию, вызывая getBlock ('block') для объекта страницы. Этот кусок контента затем копируется для каждой записи в запросе, и внутри него заменяются теги с результатами запроса. Мы посмотрим, как это будет выглядеть в шаблоне позже в этом уроке.

Диспетчер шаблонов: страница

Объект страницы управляется менеджером шаблонов, и он содержит все детали, связанные со страницей. Это позволяет управлять менеджером шаблонов, в то же время упрощая для нас расширение функциональности этого на более позднем этапе.

Как этот класс можно расширить и улучшить?

  • PostParseTags: Вы можете захотеть заменить теги после того, как большая часть страницы будет проанализирована, возможно, содержимое в базе данных содержит теги, которые необходимо проанализировать.
  • траницы с паролем: назначьте пароль странице, проверьте, есть ли у пользователя пароль в файле cookie или сеансе, чтобы они могли видеть страницу.
  • Страницы с ограниченным доступом (хотя сначала нам нужны наши компоненты аутентификации!)
  • Изменение
  • Динамическое добавление ссылок на файлы JavaScript и CSS на основе страницы или приложения.

Загрузить основные объекты

Теперь, когда у нас есть некоторые объекты, которые наш реестр собирается хранить для нас, нам нужно сообщить реестру, какие это объекты. Я создал метод в объекте PCARegistry под названием loadCoreObjects, который (как говорится) загружает основные объекты. Это означает, что можно просто вызвать это из нашего файла index.php, чтобы загрузить реестр с этими объектами.

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

Некоторые данные

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

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

Очевидно, нам нужно несколько строк данных в этой таблице!

Быстрый шаблон 

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

HTML-комментарии членов START и END обозначают блок members (который получается с помощью метода getBlock () на странице), здесь менеджер шаблонов будет перебирать записи в базе данных и отображать их.

Структура в использовании

Теперь, мы должны принести это все вместе с нашим index.php файлом:

Если мы теперь просматриваем эту страницу в нашем веб-браузере, результаты вопроса показаны на странице:

Переход в 3-ю часть  ...

В третьей части мы немного отклонимся от стороны разработки нашей платформы и рассмотрим, как проектировать с учетом нашей инфраструктуры и как нарезать шаблоны HTML таким образом, чтобы они подходили для нашей платформы. Когда мы начнем создавать наше первое приложение с нашей платформой, мы более подробно рассмотрим некоторые из этих классов. Наконец, спасибо за ваши комментарии в прошлый раз!

  • Подпишитесь на RSS-канал NETTUTS, чтобы узнать больше о новостях и статьях о веб-разработке.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.