Phing - Изграждане на PHP проекти

1. Запознанство

И така, запознайте се - Phing. Нещо като PHP ремикс на Ant, но по-лесен за научаване и в същото време доста мощен. Phing ви позволява да решавате задачи, които са тривиални за PHP проекти, има много вградени инструменти и добър API, в случай че вградените инструменти все още не са достатъчни. Можем да управляваме сглобяването с помощта на XML файлове, в които описваме целите и задачите, изпълнявани по време на процеса на сглобяване на проекта.

2. Монтаж

Phing е най-лесният за инсталиране от хранилището на PEAR.

Тези, които искат да използват най-новите версии, могат да инсталират бета версията.

А за тези, които искат да помогнат на проекта или просто да видят как работи - има SVN (dev версия на продукта - може да съдържа грешки!).

Можете също да изтеглите по-пълни пакети от страницата за изтегляне на официалния уебсайт.

3. Здравей свят!

Пример (build.xml):

Нека се опитаме да анализираме файла в команди.

Горният код декларира проект с имеmake_projectс базова директория с едно ниво по-високо от файла за компилация и първоначална целbuild. В същото време целтаbuildима зависимост (свойствоdepends) от целтаclear_cache_dir. Още по-нагоре виждаме описанието на целтаclear_cache_dir. Тази цел има 2 задачи: 1.echo- изход от реда "Изчистване на кеш директории" 2.изтриване- рекурсивно изчистване на /assets/ и /runtime/ директории

В името на интереса, нека се опитаме да усложним задачата. Да тръгваме, сега трябва да компилираме .less файловете в проекта. Опишете задачата:

Първо, разгледайтеfileset- задача, която създава списък с файлове според определен критерий. Нашиятfilesetима само едно свойствоincludeс шаблона**/assets/css/*.less, където ** е директорияпроизволно влагане. Тоест,filesetима следното условие: потърсете файлове с разширение.less, разположени в директории/assets/css/, които от своя страна се намират в произволни директории, вложени в $src_dir>(вижте кода по-горе). След това преминаваме през списъка с намерени файлове, като използваме задачатаforeach, като изпращаме всеки намерен файл в променливата $current_file> (param- променлива, в която текущата стойност на списъка ще бъде предадена на целевата задача) към задачатаless_exec(target- целевата задача, обработваща всяка стойност от списъка<1 0>).less_exec- просто вмъква пътя до файла в извикването на командатаlesscв терминала и посочва пътя към файла.less+.cssкато изходен файл. в резултат на това всички.lessфайлове в проекта ще бъдат компилирани в%filename%.less.css. Ако желаете, можете да напишете задача, която преименува тези файлове на стандартни .css или ги минифицира, но ние ще оставим това като домашно за читателите.

Точно? И като се има предвид, че Phing има доста обширни вградени инструменти (JsMin, JsLint, tar и дори инструменти за взаимодействие с различни VCS), можем доста бързо да автоматизираме изграждането, изпращане до хранилището или архивиране на проекта.