Skip to content

Latest commit

 

History

History
78 lines (76 loc) · 4.04 KB

PHPSupport.md

File metadata and controls

78 lines (76 loc) · 4.04 KB

Although phpQuery is a jQuery port, there is extensive PHP-specific support.

Table of Contents

Class Interfaces

phpQuery implements some of Standard PHP Library (SPL) interfaces.

Iterator

Iterator interface allows looping objects thou native PHP foreach loop. Example:

// get all direct LI elements from UL list of class 'im-the-list'
$LIs = pq('ul.im-the-list > li');
foreach($LIs as $li) {
  pq($li)->addClass('foreached');
}

Now there is a catch above. Foreach loop doesn't return phpQuery object. Instead it returns pure DOMNode. That's how jQuery does, because not always you need phpQuery when you found interesting nodes.

Array Access

If you like writing arrays, with phpQuery you can still do it, thanks to the ArrayAccess interface.

$pq = phpQuery::newDocumentFile('somefile.html');
// print first list outer HTML
print $pq['ul:first'];
// change INNER HTML of second LI directly in first UL
$pq['ul:first > li:eq(1)'] = 'new inner html of second LI directly in first UL';
// now look at the difference (outer vs inner)
print $pq['ul:first > li:eq(1)'];
// will print <li>new inner html of second LI directly in first UL</li>

Countable

If used to do count($something) you can still do this that way, instead of eg pq('p')->size().

// count all direct LIs in first list
print count(pq('ul:first > li'));

Callbacks

There is a special Callbacks wiki section, to which you should refer to.

PHP Code Support

Opening PHP files as DOM

PHP files can be opened using phpQuery::newDocumentPHP($markup) or phpQuery::newDocumentFilePHP($file). Such files are visible as DOM, where:

  • PHP tags beetween DOM elements are available (queryable) as <php> ...code... </php>
  • PHP tags inside attributes are HTML entities
  • PHP tags between DOM element's attributes are not yet supported

Inputting PHP code

Additional methods allows placing PHP code inside DOM. Below each method visible is it's logic equivalent.

  • attrPHP($attr, $code)
  • addClassPHP($code)
  • beforePHP($code)
  • afterPHP($code)
  • prependPHP($code)
  • appendPHP($code)
  • php($code)
  • wrapAllPHP($codeBefore, $codeAfter)
  • wrapPHP($codeBefore, $codeAfter)
  • wrapInnerPHP($codeBefore, $codeAfter)
  • replaceWithPHP($code)

Outputting PHP code

Code inserted with methods above won't be returned as valid (runnable) using classic output methods such as html(). To make it work, php() method without parameter have to be used. Optionaly phpQuery::markupToPHP($markup) can activate tags in string outputed before. REMEMBER Outputing runnable code and placing it on webserver is always dangerous !