Разработка веб-приложений с CakePHP

CakePHP

Готовлюсь к семинару по СПО, так что решил опубликовать свою статью. Не думаю, что она на текущий момент имеет какой-то практический интерес, разве что, длинный и красивый обзор фреймворка CakePHP =)

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

Скачать CakePHP можно с официального сайта cakephp.org, для скачивания доступны стабильные вресии 1.1, 1.2, 1.3 и версию 2.0, которая в настоящий момент находится в разработке.

Посмотрим, какие концепции заложены в основу CakePHР.

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

Модель в CakePHP представляет собой таблицу в базе данных, а также реляционные связи с другими таблицами.  Благодаря этому CakePHP совершенно одинаково работает с различными СУБД – поддерживаются MySQL, MSSQL, SQLite, Postgres, DB2, Oracle, Firebird, Sybase и любые другие, для которых есть ODBC интерфейс. При переходе на другую СУБД нет необходимости вносить большие изменения в код самого приложения.

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

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

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

Во-вторых,  важной особенностью фреймворка CakePHP является использование концепции ORM – Object Relationship Mapping – объектно-реляционной модели. ORM – это технология программирования, которая связывает базы данных с концепциями объектно-ориентированного программирования, создавая на основе реляционной базы данных виртуальную объектную базу данных. В реляционных СУБД данные хранятся в реляционной форме, но в приложении, особенно объектно-ориентированном, они обрабатываются в объектной форме. Таким образом, для преобразования данных из реляционного вида в объектный программисту нужно проводить с ними некоторые манипуляции. При использовании Объектно-реляционной модели данные из СУБД сразу представляются в объектном виде, кроме того, пропадает необходимость писать сам SQL код для выборки или обновления данных – он генерируется автоматически на основе данных о связях моделей.

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

Разработка веб-приложений на CakePHP не была бы таким веселыми занятием, если бы не было инструментов, которые позволяли бы автоматизировать этот рутинный процесс. CakePHP содержит полезное консольное приложение Bake, которое позволяет генерировать модели данных, стандартные методы в контроллерах и представления на основе таблиц базы данных.

Чтобы сделать разработку приложений на CakePHP менее монотонной и более быстрой предусмотрены хэлперы (или помощники). Они позволяют упростить работу с такими компонентами веб-приложения как формы, сессии, разбиение на страницы, XML, AJAX и многое другое. Использование хэлперов позволяет значительно сократить количество кода, требуемого для реализации той или иной возможности.

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

С использованием CakePHP разработаны такие веб-проекты как сайт расширений Mozilla и многие другие.

РЕКЛАМА
СЧЕТЧИКИ
 
ДРУЗЬЯ САЙТА
МОИ ПРОЕКТЫ
  • theLesenok.ru
  • 7genkov.ru