Mit Hardware-Beschleunigung und schnellem Netz hilft Desktop-Virtualisierung, Administrationsaufwand und Kosten sparen, ADMIN 04/2013 verrät, wie die ... (mehr)

Wie primitiv

»render()« muss immer XHP-Objekte zurückgeben. Möchte man nur einen String zurückgeben, muss man die eigene Klasse von der Oberklasse »x:primitive« ableiten. Diese Klasse ist jedoch explizit nur für "Low-Level-Elemente" gedacht, wie etwa die HTML-Elemente »a« oder »h1« , die tatsächlich das Markup beziehungsweise Tags ausgeben müssen. Im Gegensatz zu »x:element« müssen von »x:primitive« abgeleitete Klassen die Methode »stringify()« implementieren, die wiederum den String zurückliefert, der auch später in der Ausgabe landet. Listing 7 zeigt ein Beispiel für ein Element namens »zutat« . Dessen Methode »stringify()« gibt einfach nur den String »<div>Mehl</div>« aus.

Listing 7

Ableitung von :x:primitive

 

Sowohl Listing 6 als auch Listing 7 scheren sich nicht um ihre Kindelemente. In folgendem Fall:

echo <admin:zutat> <div>Zucker</div> </admin:zutat>;

würde weiterhin nur wie in Abbildung 7 die Ausgabe »Mehl« erscheinen. »<div>Zucker</div>« ist hier ein Kindelement von »admin:zutat« , das dieses aber nicht beachtet. Daher muss in »stringify()« noch eine Schleife her, die alle Kindelemente durchläuft und in die Ausgabe einbaut. Diese Schleife zeigt Listing 8. Sie nutzt die Methode »getChildren()« , die alle Kindelemente des Objekts zurückgibt. Sie steht auch allen Klassen bereit, die von »x:element« abgeleitet sind.

Listing 8

Auswertung der Kindelemente

 

Abbildung 7: Anstelle des div könnte stringify() auch selbstdefinierte Tags ausgeben (siehe Listing 7).

Charakterzüge

Besitzt ein Element Attribute, kann man sie einfach wie in Listing 9 nach dem Schlüsselwort »attribute« auflisten. In Listing 9 erhält das Element »admin:auto« genau zwei Attribute. Das erste heißt »marke« , nimmt Strings auf und ist mit dem Wert »Ferrari« vorbelegt. Steht ein »@require« hinter dem Attribut-Namen, so ist die Angabe des Attributs Pflicht. Sein Kollege »farbe« darf nur die zwei möglichen Werte »blau« und »rot« aufweisen.

Listing 9

Definition von Attributen

 

An die in der Zeile festgelegten Attribute gelangt man über die Methode »getAttributes()« , die man dann beispielsweise wie in Listing 9 innerhalb von »render()« in eine Schleife ausgeben kann. »getAttributes()« kennen auch alle Klassen, die von »x:primitive« abgeleitet sind.

Abbildung 9: Die Auswertung der Attribute erfolgt mithilfe der Funktion getAttributes() (siehe Listing 9).
comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019