Nested data via DOM
Een oneindige diepte maken voor bijvoorbeeld een menu, mappenstructuur. Nu met DOM.
Het voordeel met werken met DOM is dat je op een relatief gemakkelijke manier de parent node en en de child nodes kunt bereiken.
In principe maakt het van 2 dimensionale data (bijvoorbeeld uit een database) een geneste DOMDocument.
Aangezien DOMDocument af en toe toch nog best lastig is, heb ik er het e.e.a. omheengebouwd zodat alles simpel te benaderen is.
Zoals je ziet heten mijn classes:
- Nested
- Nested_Child
- Nested_Children
- Nested_Child_Properties
- Nested_Exception
Deze komen dus overeen met de bestanden:
- Nested.php
- Nested/Child.php
- Nested/Children.php
- Nested/Child/Properties.php
- Nested/Exception.php
Het voorbeeld staat helemaal onderaan.
Het komt er op neer dat je eerst de data in de class gooit met de Nested->addChild() method.
De eerste parameter is het ID, de 2e is het id van het parent element. De derde parameter is de bijbehorende data bij het element (de 'properties').
Vervolgens kan je direct al met Nested->getElements() de elementen loopen, omdat getElements() een iteratable object terug geeft (Nested_Children) waar de elementen (Nested_Child) inzitten.
Het Nested_Child element heeft een aantal methods, bijvoorbeeld:
- getParent() - deze geeft het Nested_Child object terug van het parent element
- getChildren() - deze geeft een Nested_Children object terug met een verzameling van Nested_Child objects
- getProperties() - deze geeft het Nested_Child_Properties object terug. Deze kan je met de __get() magic method benaderen om de data snel op te vragen. Dit object kan je tevens loopen met bijvoorbeeld foreach en while.
De Nested class zelf heeft naast addChild() en getElements() ook nog een method getElement()
Met deze method ga je zoeken naar een bepaald element. Deze geeft dan ook een Nested_Child object terug.
Je kunt ook gebruik maken van xPath. Bijvoorbeeld //*[@tekst="bla"] om alle children te selecteren die een property tekst hebben met bla.
De Nested class heeft ook nog een debug() method, deze zet wat xml op het scherm, zodat je snel de structuur van je elementen boom kunt zien
Gesponsorde koppelingen
PHP script bestanden
Er zijn 7 reacties op 'Nested data via dom'
Om te reageren heb je een account nodig en je moet ingelogd zijn.
PHP hulp
0 seconden vanaf nu