Интегрированные среды для работы с PHP: Часть 1. Начало работы с тремя популярными интегрированными средами

Zend, symfony, CakePHP

Еще совсем недавно PHP обычно критиковали за отсутствие поддержки MVC-архитектур. Времена меняются. Сегодня доступен целый ряд интегрированных сред для работы с PHP. В данной серии статей рассматриваются три популярные интегрированные среды для работы с PHP (Zend, symfony и CakePHP), исследуются их сходство и отличия при создании и расширении приложения в каждой из них.

Дуэйн Обрайен, PHP-разработчик, независимый писатель

Дуэйн Обрайен (Duane O'Brien) профессионал с тех времен, когда игра "Oregon Trail" была еще текстовой. Любимый цвет - суши. Никогда не был на Луне.



22.10.2008

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

О данной серии статей

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

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

Во второй части (EN) мы рассмотрим процесс создания примера приложения в каждой из трех интегрированных сред, выделяя их сходства и отличия.

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

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

В пятой части (EN) рассматривается работа вне интегрированных сред. Ставится одна задача (еженощное обновление сценария) и рассматривается процесс ее выполнения в каждой интегрированной среде.


О данной статье

Данная статья содержит много материала. Вы должны быстро начать работать. Исследуется три интегрированные среды. Какие? Почему эти три? Какие есть еще? Почему не они? Столько вопросов! Но вы получите ответы на большинство из них до рассмотрения процедуры установки каждой среды. Затем вы рассмотрите тестовое приложение, используемое в следующих частях данной серии статей. Вы начнете понимать различия между интегрированными средами, а также что они делают одинаково.

Системные требования

Перед началом работы необходимо иметь соответствующую рабочую среду. Требования минимальны:

  1. HTTP-сервер, поддерживающий работу с сессиями (предпочтительно mod_rewrite). В данной серии статей используется Apache V1.3 с mod_rewrite.
  2. PHP V5.1.4 или старше. Не все рассматриваемые интегрированные среды требуют использования данной версии PHP, но для простоты все они будут использовать одну и ту же установку PHP. В данной серии статей используется PHP V5.2.3.
  3. Не очень старая версия MySQL. Поддерживаются и доступны несколько других баз данных, но в данной серии статей и примере приложения используется MySQL V5.0.37.
  4. Операционная система, поддерживающая PHP V5.2.4 или старше и MySQL - в данной серии статей используется Linux®. Если вы работаете в Windows®, необходимо выполнить очевидные корректировки, в частности при создании упоминаемых ниже каталогов.

Предварительные требования

Предполагается, что вы уже знаете PHP, умеете проектировать приложения и работать с базой данных. Опыт работы с конкретной интегрированной средой не нужен, но вы определенно должны быть готовы погрузиться в нее.


Интегрированные среды для "чайников"

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

Идея интегрированный среды - предложить дизайн, который можно использовать в нескольких приложениях. Все приложения имеют много общего - в частности, какой-либо интерфейс с базой данных, определенный объем логики приложения, что-то, предоставляющее приложение пользователю. Если вы написали много PHP-приложений, вам известно, как это выглядит. Возможно, у вас есть набор функций или класс, осуществляющий чтение и запись данных в базу данных. Возможно, вы использовали какой-либо шаблонный механизм, например Smarty, для управления UI. Определенно вы писали PHP-код, анализирующий предоставляемые данные и принимающий решения на основе этих данных. И если вы написали много приложений, возможно, вы делали одно и то же снова и снова, копируя иногда код из одного приложения в другое.

Интегрированная среда предназначена для того, чтобы предоставить структуру для таких общих элементов (взаимодействие с базой данных, уровень представления, логика приложения) и чтобы вы тратили меньше времени на написание кода взаимодействия с базой данных или интерфейсов уровня представления, а больше времени занимались самим приложением. Архитектура, разбивающая приложение таким способом, известна под названием Модель-Представление-Контроллер (Model-View-Controller - MVC). Модель обозначает данные, Представление - уровень представления, Контроллер - логику приложения или бизнес-логику. Полное описание MVC выходит за рамки данной статьи, но мы рекомендуем исследовать эту архитектуру и разобраться, что она собой представляет (см. раздел "Ресурсы").


Выбор интегрированной среды

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

При выборе интегрированной среды для вашего проекта учитывайте мнение всех принимающих участие в проекте сторон. И при оценке среды держите с ними постоянный контакт.

Если вы думаете о переходе на интегрированную среду, внимательно рассмотрите ваше приложение и задайте себе вопрос, нужна ли ему интегрированная среда. Она не является необходимостью. Корпоративные приложения будут продолжать создаваться без использования интегрированных сред. Поможет ли такая среда проекту? Сэкономит ли время и усилия каждого? Будет ли приложение работать лучше? Обеспечится ли отсутствующая стабильность работы? Если ответом на любой из этих вопросов является "Да", нужно переходить на интегрированную среду. Если ответ на все эти вопросы "Нет", интегрированная среда только усложнит положение дел.

К сожалению, размер и тематика данной статьи не позволяет дать всеобъемлющее описание всех доступных интегрированных сред для работы с PHP. В данной статье внимание концентрируется на трех средах:

  • Zend Framework
  • symfony
  • CakePHP

Они были выбраны по нескольким причинам, но в основном их классификация такова: "Та, о которой знает ваш босс", "Та, которую кто-то уже установил" и "Та, о которой говорят". Я призываю вас исследовать CodeIgniter, Seagull, Web Application Component Toolkit (WACT), PRADO, Zoop, PHP on Trax и многие другие доступные интегрированные среды PHP. Выбор среды - это во многом дело личного вкуса, и во многом он аналогичен выбору языка программирования. Данная серия статей не подскажет вам, какая интегрированная среда лучше или хуже остальных. Там, где интегрированная среда делает что-либо хорошо, она будет названа. Где среда нежелательна, она тоже будет названа. Хотя мы не рассматриваем в нашем обзоре много интегрированных сред, принятый нами подход поможет вам взвесить достоинства и недостатки других интегрированных сред. Вы должны сформировать свое собственное мнение о рассматриваемых интегрированных средах, т.е. о том, какая из них вам нравится, и с какой вы хотите продолжать работать.

Zend Framework

Каждый знает Zend - "The PHP Company". При загрузке и установке PHP этот пакет загружается с Zend, начиная с V3. Кроме распространения PHP Zend Technologies уже много лет предлагает широкую гамму технологий поддержки PHP. Не удивительно, что Zend предлагает интегрированную среду для PHP, ставшую очень популярной (более 2 миллионов загрузок на сегодняшний день). Если ваш босс слышал об интегрированной среде для PHP, наверняка это была Zend Framework.

symfony

Спонсируемая Sensio symfony "предназначена для ускорения процессов создания и поддержки Web-приложений и для замены повторяющихся задач по кодированию мощью, контролем и удовольствием". Интегрированная среда symfony используется по всему миру в многочисленных приложениях корпоративного уровня, возможно, наиболее известных - Askeet and Yahoo! Bookmarks. Есть вероятность, что если кто-то из ваших знакомых установил, использовал или игрался с интегрированной средой для PHP, этой средой была symfony.

CakePHP

Очень много позаимствовавшая у Ruby on Rails, среда CakePHP предназначена для добавления простоты и масштабируемости в интегрированные среды для PHP. CakePHP недавно была выбрана в качестве ядра Mambo Content Management System V5. Популярность CakePHP постоянно растет, подпитываемая энергичным сообществом и быстро растущей пользовательской базой. Если вы подслушали разговор об интегрированных средах для PHP, вероятно это был разговор о CakePHP.


Установка

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

Начнем с создания папки для хранения всего исходного кода, интегрированных сред и включаемых файлов, которые понадобятся для работы с данной серией статей (например, каталог под названием /column). В данном каталоге создайте дополнительные подкаталоги: htdocs, protected, include и src. Измените конфигурационный файл Apache так, чтобы корневой каталог документов (document root) указывал на /column/htdocs, и, пока вы здесь (если не сделали этого раньше), разрешите работу модуля mod_rewrite. Измените конфигурационный файл php.ini для включения каталога /column/include/ в директиву include_path. Не беспокойтесь, если это пока не понятно. Все станет ясно при установке интегрированных сред.

Установка Zend Framework

Загрузите Zend Framework (см. раздел "Ресурсы"). В данной серии статей используется V1.0.1. Загрузите и разархивируйте Zend Framework в каталог /column/src. Дистрибутив будет содержать несколько текстовых файлов и три каталога: demos, tests и library. Скопируйте содержимое каталога library (это должна быть папка под названием Zend) в каталог /column/include/. Теперь должна иметься папка /column/include/Zend, содержащая несколько каталогов и файлов. Это библиотеки, используемые Zend Framework.

Вот и все! Zend Framework установлена.

Установка symfony

Загрузите symfony (см. раздел "Ресурсы"). Установить symfony можно любым методом, перечисленным на странице download, хотя для наших целей рекомендуется загрузить tarball. Разархивируйте его в каталог /column/src/symfony/. Должно создаться четыре каталога (data, doc, lib и licenses) и несколько файлов README. Не все это нужно для установки готового приложения, но пока они не помешают. Процесс установки может показаться простым. Помните, что эти интегрированные среды обычно состоят из вспомогательных программ и библиотек, поэтому установить их не трудно. Использование их потребует небольшой настройки. Это станет понятно попозже.

Не каждый имеет возможность использовать PHP Extension и Application Repository (PEAR). Именно поэтому мы советуем метод установки, описанный выше. Однако если вы можете использовать PEAR любым способом, сделайте это. Оба метода описаны на странице symfony installation (см. раздел "Ресурсы").

Установка CakePHP

Загрузите CakePHP (см. раздел "Ресурсы"). В данной серии статей используется версия 1.2.0.5427alpha. Ветка 1.2 CakePHP, несмотря на пометку alpha, широко применяется сообществом CakePHP. Загрузите и разархивируйте tarball, помещая содержимое в /column/src/cakephp. Должно создаться четыре каталога (app, cake, doc и vendors) и два файла (.htaccess и index.php). Позже вы переместите некоторые из этих файлов, но пока все нормально.


Тестовое приложение

Вы загрузили и установили три интегрированные среды. Но нужно отметить, что вы пока не будете ничего с ними делать, кроме проверки корректности установки при помощи приложения Hello World. Причина этого заключается в том, что мы собираемся сделать нечто более содержательное (но не намного), чем Hello World.

Создание приложения Hello World в интегрированной среде для PHP может быть не простой процедурой. Использование интегрированной среды подразумевает некоторые накладные расходы, и они проявляются, когда вы пытаетесь сделать что-то такое же простое, как Hello World. Но это принесет свои плоды при работе с более сложными приложениями.

Тестовое приложение, которое вы создадите, пока не велико. Оно позволяет передавать текст в приложение, используя текстовую область ввода данных. Этот текст будет сохраняться в базе данных и извлекаться приложением для отображения по запросу. Используя такое приложение, можно легко создавать и обновлять содержимое Web-сайта без необходимости редактирования HTML или загрузки на сервер новых файлов. Это очень новаторское приложение будет называться Blahg.

Что представляет из себя приложение Blahg?

На основании описания Blahg вы, наверное, уже сделали вывод о том, как будет разрабатываться приложение. Для Blahg нужны четыре элемента:

  1. Страница с формой. Эта форма должна содержать как минимум текстовую область ввода сообщений. Данная страница будет страницей для записи.
  2. Страница, читающая сообщение. На эту страницу нужно будет передать какой-либо идентификатор сообщения (Identifier). Эта страница будет страницей для чтения.
  3. Страница, на которой перечислены доступные сообщения. Это индексная страница.
  4. Таблица базы данных для хранения сообщений. В этой таблице нужно будет хранить как минимум текст сообщения и его идентификатор (возможно, заголовок и дату последнего изменения).

Очевидно, Blahg мог бы быть более сложным, и позднее в данной серии статей вы сделаете несколько усовершенствований. Но пока будем считать, что этих простых требований достаточно. К сожалению, мы не собираемся пока создавать Blahg в какой-либо интегрированной среде. Это произойдет во второй части (EN). А пока самое время настроить используемые базы данных.


Настройка баз данных

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

Создайте три базы данных под названием Zend, symfony и Cake и предоставьте все полномочия для каждой базы данных соответствующему пользователю. Приведенные ниже инструкции для каждой интегрированной среды будут содержать SQL-выражения, необходимые для создания таблиц сообщений.

Пока базы данных не заполнены, можно создать также таблицы, которые будет первоначально использовать приложение Blahg. Создайте таблицу posts в базах данных Zend и symfony, используя следующий SQL-запрос.

Листинг 1. Создание таблицы posts в Zend и symfony
CREATE TABLE 'posts' ( 
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
'title' VARCHAR( 255 ) NOT NULL , 
'text' TEXT NOT NULL , 
'modified' TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
) ENGINE = MYISAM ;

Для Zend и symfony поддержка столбца modified остается за базой данных. Для CakePHP используется слегка другой SQL-запрос. Он позволит Cake выполнить некоторые магические действия (в частности, CakePHP будет автоматически поддерживать столбец modified).

Листинг 2. Создание таблицы posts в CakePHP
CREATE TABLE 'posts' ( 
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
'title' VARCHAR( 255 ) NOT NULL , 
'text' TEXT NOT NULL , 
'modified' DATETIME DEFAULT NULL 
) ENGINE = MYISAM ;

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


Дальнейшие действия

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


Резюме

Мы рассмотрели основы. Я надеюсь, что установки интегрированных сред у вас прошли гладко, но если возникли какие-либо проблемы, вы должны просмотреть документацию по установке соответствующей интегрированной среды (см. раздел "Ресурсы"). Потратьте время на создание Blahg в соответствии с изложенными выше инструкциями. Это будет с пользой проведенное время.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


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

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source
ArticleID=347172
ArticleTitle=Интегрированные среды для работы с PHP: Часть 1. Начало работы с тремя популярными интегрированными средами
publish-date=10222008