Pull to refresh

qJerry: пиши меньше, делай больше. Теперь на PHP.

Lumber room
Как-то незаметно на Хабре прошло появление в свет интересной, на мой взгляд, библиотеки.

О библиотеке qJerry


qJerry — это библиотека для работы с XML-документами, написанная на языке PHP. Основная миссия qJerry — сделать работу с XML комфортнее, чем позволяют стандартные средства PHP, такие как расширение DOM.

При разработке современных веб-приложений, XML, PHP и JavaScript часто встречаются вместе, для того чтобы осуществилось чудо под названием AJAX. Однако, разработчику такая встреча может стоить много времени и нервов, если он не вооружится хорошими инструментами. Одним из таких инструментов, облегчающих нам жизнь, является библиотека jQuery. Не будет преувеличением сказать, что она настолько удобна в использовании, а принципы, положенные в её основу, настолько просты и гениальны, что их хочется вынести за рамки JavaScript и использовать везде, где приходится работать с XML. Библиотека qJerry — как раз такая попытка спроецировать на PHP подход, используемый в jQuery.

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

qJerry является своеобразной обёрткой для расширения DOM и почти полностью копирует поведение и API библиотеки jQuery, знакомый многим веб-разработчикам. Есть несколько важных отличий:

  • в качестве языка запросов используется XPath, селекторы jQuery не поддерживаются;
  • методы типа append(), before() и т.п. возвращают множество добавленных элементов; вернуться к исходному множеству можно с помощью метода end();
  • методы для работы с событиями и эффектами, а также другие, специфичные для родного окружения jQuery, браузера, не поддерживаются, поскольку не имеют смысла в контексте серверного языка программирования;
  • названия методов empty() и clone() изменены соответственно на clear() и copy(), во избежание конфликтов с зарезервированными словами PHP;
  • qJerry ориентирован на работу с любым количеством произвольных XML-документов, тогда как jQuery работает преимущественно с одним — собственно веб-страницей.


Примеры использования qJerry


Простой пример

Предположим, нам нужно создать такой XML-документ:
<?xml version="1.0" encoding="UTF-8"?>
<items><item id="1"/><item id="2"/></items>


Делаем это с использованием традиционного DOM:
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->appendChild($dom->createElement('items'));
$dom->documentElement->appendChild($dom->createElement('item'))->setAttribute('id', '1');
$dom->documentElement->appendChild($dom->createElement('item'))->setAttribute('id', '2');
echo $dom->saveXML();


А теперь то же самое с использованием qJerry:
q('items')->append('item')->attr('id', '1')->end()->append('item')->attr('id', '2')->dump();

Не трудно видеть, что qJerry позволяет работать с XML гораздо проще, чем DOM, даже в самом тривиальном случае, не говоря уже о сложных манипуляциях с множественными запросами и изменениями дерева XML.

Ну и собственно библиотека: qJerry
Tags:qjerryphpxml
Hubs: Lumber room
Total votes 38: ↑34 and ↓4+30
Views323

Popular right now

Top of the last 24 hours