Facebook
Twitter
Google+
Kommentare
7

Erstellt eure eigene PHP Bibliothek

Diesmal ein wenig später am Tag, aber da ihr Samstags auch nicht so früh aufstehen werdet, denke ich doch mal, dass es ok ist. Heute geht es eher im einen kleinen Rat, den ich euch mitgeben will. Naja zumindest denen, die noch nicht so lange im PHP-Geschäft sind. Legt euch eure eigene PHP Bibliothek an. Sobald ihr euch eine Methode schreibt, die nicht domänenspezifisch ist, also nicht nur im Kontext eurer Anwendung eine Rolle spielt, solltet ihr diese separiert behandeln. Habt ihr zum Beispiel Tool, das ein Kreuzworträtsel erstellt, in dem ihr eine Methode benötigt, die einen String rekursiv ausgibt, dann solltet ihr diese Methode nicht fest in euer Projekt integrieren, sondern lose gekoppelt in eure Bibliothek werfen. In meinem Fall würde dies dann so aussehen:

class Base_String
{
  /**
   * Some documentation
   * @param String $string
   * @return string
   */
  public static function recursive( $string )
  {
    // ...
  }
}

Nur so kann ich sicherstellen, dass ich das Rad nicht zwei mal erfinden muss. Oder kennt ihr das Gefühl etwa nicht, dass man in einen früheren Projekt schon mal etwas programmiert hat, das man jetzt gut gebrauchen könnte, aber man diese Stelle nicht mehr findet oder sie viel zu speziell verfasst hat. Dieser Ansatz sollte dies umgehen. Und ihr werdet sehen, wie schnell sich so eine Bibliothek aufbauen lässt.

Als wichtigen Merksatz solltet ihr noch beachten, dass keine dieser Klassen eine Abhängigkeit in euer Projekt besitzen darf. Alle Abhängigkeiten beziehen sich nur auf die Bibliothek selber. Achtet auch drauf, dass ihr eine gute Dokumentation verfasst, denn wer weiss, ob ihr in ein paar Wochen eure Gedanken von früher wieder zusammen bekommt.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

7 Comments

  1. Wenn man das Rad nicht neu erfinden will, sollte man sich auch die großen Frameworks ansehen und sich eins davon aussuchen. Meiner Meinung nach ist ZF ja schon der Platzhirsch geworden. Aber je nach Geschmack, Paradigma und Stil kann man sich – natürlich – auch für ein anderes entscheiden.

    Auch in Sachen „Aufbau einer Bibliothek“ kann man da noch so einiges lernen.

    Reply
  2. Ein Framework ist natürlich grundsätzlich nicht schlecht und Zend Framework auch mein persönlicher Favorit, aber nichtsdestotrotz wird man für sich selber immer wieder speziellere Sachen brauchen, die ein Framework nicht abdecken kann.

    Vielfach wird hier ja lieber auf Copy & Paste zurückgegriffen anstatt sich eine eigene Bibliothek aufzubauen.

    Reply
  3. @Nils ich denke diese Vermischung ist nicht zuletzt PEAR geschuldet, welches sich als Framework bezeichnet, obwohl es das eindeutig nicht ist, sondern „nur“ ein Repository mit verschiedenen Bibliotheken.

    Andererseits unterteilen sich Frameworks in mehrere Kategorien. Die meisten verstehen unter „Framework“ immer „Application Framework“ – das ist jedoch nur eine von vielen Subkategorien.

    Es gibt durchaus auch „Component Frameworks“. Diese verlangen jedoch eigentlich, dass die „Components“ sich an die Definition einer Komponente halten, was bei PEAR jedoch nicht der Fall ist. Komponenten verlangen eine klare Kapselung, welche den PEAR-Bibliotheken einfach fehlt.

    In dieser Reihe würde ich aber ganz klar Lösungen wie SWING sehen. Die SWING-Komponenten bilden insgesamt ein „Component Framework“.

    Das Bibliotheken und Component Frameworks eine gewisse Verwandtschaft haben liegt in der Natur der Sache. Der Unterschied ist, dass Bibliotheken nicht die Definition einer Komponente erfüllen.

    Reply
  4. Den Tipp beherzige ich auch schon eine Weile, was mir allerdings fehlt ist ein vernünftiges Programm was meine Bibliothek verwaltet. Denn sonst sitze ich beim nächsten Mal „String rekursiv ausgeben“ vor meinem Projekteordner und weiß das ich das irgendwo toll gekapselt habe, aber wo…
    Wie sieht da deine Lösung aus? Auch im Hinblick auf Dokumentation und Versionisierung.

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen