Хотя phpQuery является портом JQuery, существует обширная поддержка PHP конкретных выражений.
Классы интерфейсов
phpQuery реализует некоторые Стандартный PHP библиотеки (SPL) интерфейсов.
Iterator
Интерфейс итератора позволяет в цикле объектах использовать родной PHP цикл по каждому элементу. Пример:
1 2 3 4 5 |
// получить все прямые элементы li из ul имеющим класс 'im-the-list' $LIs = pq('ul.im-the-list > li'); foreach($LIs as $li) { pq($li)->addClass('foreached'); } |
Из кода выше мы имеем цикл по каждому элементу, который не возвращает объект phpQuery. Вместо этого он возвращает чистую DOMNode. Как это делает JQuery, потому что не всегда вам нужен phpQuery когда вы нашли интересующие узлы.
Доступ к массиву
Если вам нравится использовать массивы, с phpQuery вы все ещё можете это сделать, благодаря интерфейсу ArrayAccess.
1 2 3 4 5 6 7 8 |
$pq = phpQuery::newDocumentFile('somefile.html'); // вывести первый список из внешнего HTML файла print $pq['ul:first']; // изменить внутри HTML второго li непосредственно в первом элементе ul $pq['ul:first > li:eq(1)'] = 'Новый значение внутри HTML второго li непосредственно в первом ul'; // Теперь посмотрите на разницу (внешний файл html против внутреннего html) print $pq['ul:first > li:eq(1)']; // будет выведено <li>Новый значение внутри HTML второго li непосредственно в первом ul</li> |
Счётчики
Если используется, чтобы сделать count($something) вы все равно можете сделать это таким образом, вместо того, чтобы сделать например, pq(‘p’)->size().
1 2 |
// рассчитываем все li в первом списке print count(pq('ul:first > li')); |
Обратные вызовы
Существуют обратные выховы, о них вы можете обзнакомиться в соотвествующем разделе.
Поддержка php кода
Открытие PHP файла, как DOM
PHP-файлы могут быть открыты с помощью phpQuery::newDocumentPHP($markup) or phpQuery::newDocumentFilePHP($file). Такие файлы видны как DOM, где:
PHP теги Разногласия между элементами DOM доступны (запрашиваемых) как <php> …code… </php>
PHP теги внутри атрибутов HTML страницы
PHP теги между атрибутами DOM Element в данный момент не поддерживаются
Ввод php кода
Дополнительные методы позволяет размещать PHP кода DOM. Ниже для каждого элемента представлена его логика.
attrPHP($attr, $code)
attr($attr, «<?php $code ?>»)
addClassPHP($code)
addClass(«<?php $code ?>»)
beforePHP($code)
before(«<?php $code ?>»)
afterPHP($code)
after(«<?php $code ?>»)
prependPHP($code)
prepend(«<?php $code ?>»)
appendPHP($code)
append(«<?php $code ?>»)
php($code)
html(«<?php $code ?>»)
wrapAllPHP($codeBefore, $codeAfter)
wrapAll(«<?php $codeBefore?><?php $codeAfter ?>»)
wrapPHP($codeBefore, $codeAfter)
wrap(«<?php $codeBefore?><?php $codeAfter ?>»)
wrapInnerPHP($codeBefore, $codeAfter)
wrapInner(«<?php $codeBefore?><?php $codeAfter ?>»)
replaceWithPHP($code)
replaceWith(«<?php $code ?>»)
Вывод php кода
Код вводимый с методами выше, не будут возвращен, используя классические методы вывода, такие как html(). Чтобы заставить его работать, php() метод без параметра должны быть использованы. Опционально phpQuery::markupToPHP($markup) может активировать теги в строке выведены раньше. ПОМНИТЕ вывод работоспособного кода и размещение его на веб-сервере всегда опасно!.