В этой статье я хочу рассказать об использовании Phing при разработке небольшого web приложения. Почему небольшого? Все очень просто. С одной стороны в качестве примера будет использован реальный build файл, а не упрощенный вариант из учебника. А с другой – этот build файл достаточно короткий, и о нем можно было рассказать в рамках статьи . Примечание. Phing – это система сборки проектов, основанная на Apache Ant. Я предполагаю, что вы знаете как её установить и настроить. Если нет – читайте «Программирование на PHP. Избавляемся от рутинных операций с помощью Phing». Итак, приступим. Недавно я писал о генераторе форм для фреймворка CodeIgniter. Как вы понимаете приложение небольшое, но, тем не менее, перед переносом его на сервер нужно сделать массу рутинных операций. 1) Subversion в каждой папке приложения создает скрытую папку “.svn”, что значительно усложняет «ручное» копирование файлов. Т. е. каждую папку придется копировать отдельно. 2) JavaScript и CSS файлы желательно сжать. 3) Кроме того, много маленьких файлов загружаются дольше, чем один большой. Т. к. в данном приложении используется 5 js-файлов, то разумно будет объединить их в один. С другой стороны, во время разработки удобнее работать именно с 5-тью маленькими файлами. 4) Раз мы объединяем несколько js-файлов в один, то необходимо изменить теги в заголовках страниц. 5) Практически все современные браузеры поддерживают gzip сжатие. Поэтому сделаем архивную версию объединенного JavaScript файла (для браузеров, которые поддерживают gzip, будем отдавать архивную версию, всем остальным – обычную). Как видите, работы не много. Но представьте, вы подготовили приложения для размещения на сервере, и нашли ошибку или решили что-то изменить. Исправить сжатые js файлы конечно можно, но, поверьте, это далеко не самое увлекательное занятие . Т. е. вам придется внести исправления в исходный вариант и выполнить все шаги с 1 по 5 заново. Естественно такую работу можно автоматизировать и Phing отлично подойдет в этой ситуации. Рассмотрим размещение файлов проекта.
css/ ie6styles. css styles. css images/ add. png ci_logo. jpg ....... lib/ jquery/ jquery. js tabs/ jquery-ui-personalized-1.5.2.js tooltip/ jquery. dimensions. js jquery. tooltip. js mainscripts. js index. html .htaccess build. xml
Здесь index. html – единственная страница приложения, build. xml – файл с задачами для Phing, .htaccess – определяет в каком случае отправлять архивную версию js файла (подробнее здесь). Переходим к build файлу. Т. к. он довольно объемный я буду приводить его по частям. Прежде всего, создаем проект и несколько свойств.