Die Blüte unserer Bromelie

Die Blüte einer Bromelie

Die Blüte einer Bromelie.

Da es zig verschiedene Bromelien gibt, kann ich nicht genau sagen, welche jetzt genau das ist. Es wird aber keine Ananas sein.

Bei dem Bild scheint mir, durch das Hochladen und Komprimieren scheint die Schärfe gelitten zu haben. Das Original ist richtig scharf.

Ein neues Plugin: Eine abstrakte Klasse für XML-Elemente

Weil es Spaß und Sinn macht: Eine abstrakte Klasse für XML-Elemente.

Der Vorteil einer abstrakten Klasse: Methoden, die sich nicht ändern, müssen nicht bei jeder abgeleiteten Klasse wiederholt im Code erscheinen. Es könnten auch Traits verwendet werden, jedoch sind sie nicht für den Fall gedacht, dass die Methoden zur gleichen Klassenhierarchie gehören.

ALeo_Sitemap_Xml

  1. <?php
  2. /*
  3. Hier werden bereits alle Methoden implementiert,
  4. die alle Klasssen vom Typ 'ILeo_Sitemap_Xml'
  5. gemeinsam haben.
  6. Author: Hermann J. Leopold
  7. Email: hermann.leopold@leopoldnet.de
  8. Date: 2017-02-08
  9. /*
  10. require_once('ILeo_Sitemap_Xml.php');
  11. abstract class ALeo_Sitemap_Xml implements ILeo_Sitemap_Xml
  12. {
  13. /* Hier muss bei den konkreten Klassen
  14. der Name aka Symbol zurück
  15. gegeben werden. /*
  16. protected abstract function getSymbol();
  17. /* Hier wird der Inhalt des Elements
  18. zurück gegeben. Da dies entweder
  19. Text oder andere Elemente sein
  20. können, muss auch diese Methode von
  21. jedem Element überschrieben werden.
  22. /*
  23. protected abstract function getContent();
  24. /* Mit den Attributen des Elements könnte
  25. man viel Spaß haben; eigene Klassen,
  26. schön mit addAttribute eine Liste
  27. hinzufügen...
  28. Da aber nur ein Element überhaupt
  29. Attribute hat, die dazu noch stets
  30. gleich sind, habe ich diese
  31. einfache Methode bevorzugt. /*
  32. protected function getAttributes()
  33. {
  34. // Gibt es Attribute, muss
  35. // diese Methode überschrieben
  36. // werden
  37. return '';
  38. }
  39. /* Hier die wichtige konkrete
  40. Klasse -> das Element wird erstellt /*
  41. public function toString()
  42. {
  43. // Die vielen Zeilen haben einen Grund:
  44. // Es sieht so besser im Blog aus.. 😄
  45. $sReturn = ILeo_Sitemap_Xml::csTagAuf . $this->getSymbol();
  46. $sReturn .= $this->getAttributes() . ILeo_Sitemap_Xml::csTagZu;
  47. $sReturn .= $this->getContent();
  48. $sReturn .= ILeo_Sitemap_Xml::csTagAuf;
  49. $sReturn .= '/' . $this->getSymbol();
  50. $sReturn .= ILeo_Sitemap_Xml::csTagZu;
  51. return $sReturn;
  52. }
  53. }

ALeo_Sitemap_Xml.php

Dank der getContent()-"Problematik" kann ich noch zwei abstrakte Klassen schreiben. Hurra – und ich sollte mal ein Klassendiagramm erstellen. Es könnte sich lohnen 😃

Ein neues Plugin: Schnittstellen definieren (Ⅱ)

ILeo_Sitemap_Page

Bei den Daten der einzelnen Seiten habe ich wie besprochen auf die Elemente „changefreq“ und „priority“ verzichtet. Dafür können so viele Bilder wie gewünscht hinzugefügt werden.

  1. <?php
  2. /*
  3. Deklariert Methoden und Konstanten für einen
  4. Seiteneintrag der sitemap.xml
  5. Author: Hermann J. Leopold
  6. Email: hermann.leopold@leopoldnet.de
  7. Date: 2017-02-01
  8. /*
  9. interface ILeo_Sitemap_Page
  10. {
  11. // Symbol des Url-Elements:
  12. const csUrlSymbol = "url";
  13. // Symbol für das Location-Elements
  14. const csLocationSymbol = "loc";
  15. // Symbol für das Zuletzt-geändert-Element
  16. const csLastModSymbol = "lastmod";
  17. // Hinzufügen der Bilder
  18. // Was ein Bild ausmacht, wird in der
  19. // ILeo_Sitemap_Image festgelegt.
  20. function addImage(ILeo_Sitemap_Image $oImage);
  21. // URL der Seite angeben.
  22. function setLocation($sUrl);
  23. // Datum der letzten Änderung angeben.
  24. function setLastMod($sLastMod);
  25. }

ILeo_Sitemap_Image

Die wichtigste Neuerung zum alten Plugin sitzt hier. Für jedes Bild können mehrere Texte hinterlegt werden. Die Möglichkeit, einen Link zur Lizenz zu hinterlegen habe ich behalten; wer weiß, ob es noch für was gut sein kann.

  1. <?php
  2. /*
  3. Deklariert Methoden und Konstanten für einen
  4. Bildeintrag in die sitemap.xml
  5. Author: Hermann J. Leopold
  6. Email: hermann.leopold@leopoldnet.de
  7. Date: 2017-02-02
  8. /*
  9. interface ILeo_Sitemap_Image
  10. {
  11. // Symbol des Image-Elements
  12. const csImageSymbol = "image:image";
  13. // Symbol des Location-Elements
  14. const csLocSymbol = "image:loc";
  15. // Symbol des Untertitel-Elements
  16. const csCaptionSymbol = "image:caption";
  17. // Symbol des Aufnahmeort-Elements
  18. const csGeoLoaction = "image:geo_location";
  19. // Symbol des Titel-Elements
  20. const csTitle = "image:title";
  21. // Symbol des Lizens-Elements
  22. const csLicense = "<image:license>";
  23. // Ich wechsle hier von Loc auf Url,
  24. // um Verwechslungen zu vermeiden.
  25. function setUrl($sUrl);
  26. // Angabe des Untertitels
  27. function setCaption($sCaption);
  28. // Angabe des Aufnahmeorts
  29. function setGeoLocation($sGeoLocation);
  30. // Angabe des Bildtitels
  31. function setTitle($sTitle);
  32. // Angabe der Lizens-Elements
  33. function setLicense($sLicense);
  34. }

Jetzt wird es Zeit für Konkretes.