18

Click here to load reader

FluentDom

Embed Size (px)

Citation preview

Page 1: FluentDom

#phpbcat

FluentDOMThomas Weinert

Page 2: FluentDom

About Me

● Application Developer● PHP● JavaScript● XSL

● Papaya Software GmbH● papaya CMS● Technical Director

Page 3: FluentDom

About You?

Page 4: FluentDom

About FluentDOM

● JQuery API● DOMNodeList replacement● Learning Project

● Test driven development● Continous Integration● Parser

● Tobias Schlitt● Bastian Feder, Thomas Weinert

Page 5: FluentDom

Differences To jQuery

● „Only“ Traversing, Manipulation and some Core functions

● Xpath Expressions (not CSS Selectors)● No method html() but xml()● Callbacks have a $node parameter

Page 6: FluentDom

Chaining

● Methods return objects

Page 7: FluentDom

Chaining Sample

$fd = FluentDOM($html, 'html') ->find('/html/head/title') ->add('//h1') ->add('//h2');

Page 8: FluentDom

Traversing

● find()● add()● not()● filter()● has()● end()● andSelf()

● children()● closest()● contents()● parent()● parents()● parentsUntil()● siblings()

● first()● last()● prev()● prevAll()● prevUntil()● next()● nextAll()● nextUntil()

Page 9: FluentDom

Xpath

● XML Path Language● W3C Recommendation 16 November 1999● Used by

● XSLT 1● Xpointer

● More specific then CSS● More powerful then CSS

Page 10: FluentDom

Namespaces

● Xpath depends on namespaces● Register your own namespaces prefixes● Method: namespaces()

$title = FluentDOM($xml) ->namespaces( array('project-atom' => 'http://www.w3.org/2005/Atom') ) ->evaluate( 'string(/project-atom:feed/project-atom:title)' );

Page 11: FluentDom

Interfaces

● IteratorAggregate● Iterator● RecursiveIterator● Seekable

● Countable● ArrayAccess (read only)

Page 12: FluentDom

Functions

● Create FluentDOM object and load data● FluentDOM● FluentDOMStyle

Page 13: FluentDom

Manipulation

● append()● prepend()● before()● after()● remove()● replaceAll()● replaceWith()

● appendTo()● prependTo()● insertAfter()● insertBefore()● wrap()● wrapAll()● wrapInner()

● xml()● text()● attr()● addClass()● removeClass()● toggleClass()

Page 14: FluentDom

Loaders

● Default Loaders● DOMDocument, DOMNode● XML (file and string)● HTML (file and string)

● Additional Loaders● SimpleXMLElement● PDO● JSON

Page 15: FluentDom

Own Loaders

● Interface FluentDOMLoader● load() returns DOMDocument or DOMNode

Page 16: FluentDom

Extending FluentDOM

● FluentDOMCore● spawn()● push()● unique()● _applyContentsToNodes()

Page 17: FluentDom

Future

● CSS Selectors● ?

Page 18: FluentDom

Get It

● http://fluentdom.org● http://nightly.fluentdom.org● svn://svn.fluentdom.org