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
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

Ausgabe /2023