Как создать свой сайт на PHP? Или зачем нужны фреймворки?

Владимир | | CodeIgniter, Разное.

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

Но, проблема в том, что это учебные примеры. Как только вы попытаетесь использовать их на практике, вы увидите, как увеличивается объем кода. Рассмотрим обработку данных, полученных из формы. Мы должны:

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

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

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

Итак, сегодня для создания web сайта (приложения) существует три основных подхода (или их комбинации).

1) Использовать «чистый» PHP + стандартные и дополнительные библиотеки. Этот вариант самый трудоемкий, но при этом обладает наибольшей гибкостью. Вы можете реализовать практически любой функционал и при этом обеспечить максимальную производительность. Правда есть один нюанс. Хороший продукт вы получите только после тестирования и оптимизации приложения, а это совсем не такой простой процесс, как кажется на первый взгляд.

2) Использовать готовое решение. На сегодняшний день практически для всех широко распространенных типов сайтов существуют готовые движки. Например, WordPress, Joomla, PHPbb и многие другие. Тут можно вообще обойтись без программирования, т.к. эти решения представляют собой готовые сайты (блоги, порталы, форумы и т.п.) вы только создаете контент. Отсюда и название CMS (content management system) – системы управления контентом. Если стандартной функциональности не хватает, то можно написать плагин (или найти готовый). В принципе многие такие системы обеспечивают неплохую производительность, но только в тех задачах, для которых они изначально проектировались. Т.е. вы сможете добавить нужные вам функции, но при этом производительность (потребление ресурсов) может быть значительно хуже, чем в первом варианте.

3) Использовать фрэймворк (framework). В принципе, фрэймворк можно считать дополнительной библиотекой. Но есть существенное отличие. Библиотеку вы используете для расширения функциональности приложения. А фрэймворк кроме того определяет архитектуру (взаимосвязи между компонентами) приложения. Если использовать аналогии со строительством дома, то библиотеками можно считать кирпичи, оконные и дверные блоки, а фрэймворком – фундамент и несущие стены (знаю, сравнение довольно грубое, но суть отражает). В принципе, использование фрэймворка это что-то среднее между первым и вторым вариантом. С одной стороны свобода ваших действий будет ограничена по сравнению с первым вариантом, но эти ограничения незначительные по сравнению с готовыми решениями.

Я хочу рассказать об одном из самых популярных PHP фрэймворков – Code Igniter. Сегодня я кратко остановлюсь на его основных возможностях, а в следующих выпусках блога покажу несколько примеров.

Почему именно Code Igniter? На сегодняшний день существует довольно много PHP фрэймворков. Но, Code Igniter, на мой взгляд, обладает несколькими важными достоинствами. Прежде всего, это простота установки и настройки, а также хорошая документация. Кроме того, библиотеки, входящие в состав этого фрэймворка практически не зависят друг от друга, что позволяет снизить потребление ресурсов. При этом ничто не мешает использовать свои собственные библиотеки вместо стандартных.

В качестве основного архитектурного шаблона Code Igniter использует MVC (model-view-controller или по-русски модель-вид-контроллер). О достоинствах и недостатках этой архитектуры написано очень много, но, тем не менее, на сегодняшний день она является самой распространенной. Например, в обзоре Taking a look at ten different PHP frameworks рассмотрено 10 PHP фрэймворков, и 8 из них используют архитектуру MVC.

Сайт, построенный в соответствии с этой архитектурой состоит из компонентов трех видов (модели, вида и контроллера).
На диаграмме показаны связи между этими компонентами.

Диаграмма классов MVC

Диаграмма 1. Архитектура MVC.

Контроллер представляет собой центр управления. Он получает запросы от браузера и обрабатывает их.
Модель используется для работы с данными (например, для чтения/записи/обновления данных в БД и т.п.).
Вид формирует html страницу, которая отправляется браузеру.

Примечание. Из диаграммы видно, что модель ничего не знает об остальных компонентах, а вид не знает о контроллере.

Таким образом, эта архитектура позволяет разделить три основных этапа работы сайта (web приложения).

Естественно, вы не обязаны использовать все эти компоненты. Можно написать код обращения к БД и формирования страницы прямо в контроллере. Но стоит ли так делать? Вам как минимум будет очень не удобно работать с таким файлом.

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

codeigniter.com/wiki/ — здесь можно найти множество полезных советов и дополнительных библиотек.

www.ciforge.com/ — этот ресурс специально предназначен для размещения проектов, связанных с Code Igniter. Если я не ошибаюсь, на сегодняшний день тут размещено более двадцати проектов.

Думаю, на сегодня достаточно. В следующий раз я расскажу об установке и настройке фреймворка.

Удачи!

Интересно почитать

Современные навесы из поликарбоната украсят вид любого здания.