• Erstellt eure eigene PHP Bibliothek

    von am 13. Dezember 2008

    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.

    Nils Langner

    Auch wenn Ihr es mir nicht glauben werdet, aber ich habe nichts gegen PHP. Ich rege mich einfach nur gerne auf. Ok so schlimm ist es auch nicht. Eigentlich wollte ich schon immer einen Blog haben und da ...

    Zum Profil von Nils Langner

    7 Kommentare »


    • unset
      am 13. Dezember 2008 um 13:02 Uhr

      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.


    • Ralf
      am 16. Dezember 2008 um 14:42 Uhr

      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.


    • unset
      am 16. Dezember 2008 um 16:43 Uhr

      Man kann ja auch durchaus mehrere Bibliotheken (inkl eigener) nebeneinander betreiben.


    • Nils Langner
      am 16. Dezember 2008 um 19:25 Uhr

      Irgendwie finde ich es komisch, dass im Bereich PHP, die Begriffe Framework und (Komponenten-)Bibliotheken irgendwie vermischt wurden.


    • Tom
      am 14. Dezember 2009 um 11:20 Uhr

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


    • paul
      am 14. Dezember 2009 um 12:15 Uhr

      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.


    • lo
      am 14. Dezember 2009 um 13:47 Uhr

      @paul
      Namespaces und phpDocumentor sollten dir helfen.

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.