Больше чем вы ожидали? Давайте посмотрим внимательнее. Большую часть здесь занимают: работа со списком файлов, различные проверки и обработка ошибок. Рассмотрим все по порядку. В строке 3 мы проверяем, доступна ли функция mb_convert_encoding. Если нет, то создаем исключение (BuildException) и в зависимости от значения свойства failonerror либо отправляем его, либо пишем сообщение в лог. Если функция доступна, начинаем обработку файлов. Как вы помните, список файлов хранится в свойстве filesets, точнее в нем хранится массив объектов FileSet, каждый из которых содержит список файлов. Поэтому для обработки всех файлов нам нужно использовать два вложенных цикла. Внешний (строка 6) проходит по всем объектам FileSet, а внутренний (строка 12) – по всем файлам в этих объектах. Вы, наверное, заметили, что здесь мы используем свойство, которого не объявляли ($this->project). Это свойство содержит объект с данными проекта и создается автоматически. В данном случае мы его используем при получении имен файлов. Кроме того, мы используем несколько методов объекта FileSet. Например, getDirectoryScanner (объявлен в файле phing\types\AbstractFileSet. php). Подробно я на них останавливаться не буду, названия говорят сами за себя. В любом случае, они нам нужны только для того, чтобы получить список исходных файлов. И в большинстве задач этот код (строки 9-10) меняться не будет. Во внутреннем цикле (строки 12-21) мы формируем пути к перекодированным файлам и изменяем кодировку (строка 20). Обратите внимание на строку 13. В ней мы записываем в лог имена всех переименованных файлов. Эти записи очень помогают при поиске ошибок в build файлах. В строках 22-29 мы перехватываем и обрабатываем возможные исключения. Заключение. Как видите, создание собственно задачи для Phing не намного сложнее разработки обычного PHP скрипта. Нужно только знать несколько правил и особенностей. По большому счету, написать скрипт с аналогичной функциональностью было бы сложнее, т. к. пришлось бы писать парсер для xml файла или придумывать другой способ ввода информации. Скачать. Если вы хотите поэкспериментировать – качайте архив с этой задачей. В нем же находится небольшая инструкция по установке. Интересно почитать. Учимся профессионально водить с авто инструктором. Рассказать о чем-то всему миру можно с помощью бесплатные объявления казахстан. Позаботиться о своем здоровье вам помогут в клиника Марыныч.
Понравилась статья? Получай обновления и будь всегда в курсе событий!