Doctrine – Der Start

Wie im vorherigen Beitrag geschrieben, habe ich mich für Doctrine entschieden was die Anbindung und Abfragen an die Datenbank angeht. Doctrine muss aber erstmal die Datenbankstruktur „kennenlernen“. Bei bestehenden Datenbanken kann man durch einen einfachen Befehl Doctrine dazu bringen, die Datenbank- und Tabellenstrukturen zu scannen und diese Daten werden dann als PHP-Klassen in einem Verzeichnis abgelegt. Diese Klassen kann und muss man später dann erweitern um die ganze Funktionalität von Doctrine nutzen zu können. Dies klingt zwar im ersten Moment nach viel Arbeit, aber wenn man erst mal die positiven Aspekte erkannt hat, ist man da relativ schnell drin. Außerdem muss man ja nicht gleich alle Relationen und andere Dinge schon zu Beginn hinterlegen, sondern man kann dies auch nach und nach machen, wie man es halt braucht.

Aber von Anfang an. Zuerst muss man sich natürlich die aktuellste Version von Doctrine herunterladen und entpacken. Um die PHP-Klassen zu erstellen, braucht man Doctrine noch nicht mal zwingend in ein Framework einbinden, sondern man kann das auch „standalone“ machen. Also einfach ein kleines Verzeichnis im Webroot erstellen und dort den „Doctrine“ Order reinkopieren. Außerdem muss auch noch ein Verzeichnis „Models“ und darin ein Verzeichnis „generated“ erstellt werden und die ggf. mit einer Schreibberechtigung versehen. Dann nur noch zwei PHP-Dateien erstellen:
Continue reading

PHP Frameworks – Bloß welches?

Für die Neuprogrammierung von Musik-Sammler.de soll mir ein bestehendes Open Source PHP Framework das meiste an Basisarbeit abnehmen, um gleich von Anfang an einiges an Zeit zu sparen. Also eine Implementierung des MVC-Patterns, eingebaute Mechanismen für das Loggen von Daten und der Behandlung von Fehlern usw. Außerdem hab ich auch die Schnauze voll, jede kleine und große Abfrage in der Datenbank irgendwo im PHP-Code zu verstreuen und jeden Query per Hand zu formulieren. Also wäre ein Datenbank-Wrapper bzw. ORM-Modul nötig. In dieser Hinsicht wurde ich aber dankenswerterweise von einem Arbeitskollegen bereits auf Doctrine aufmerksam gemacht. Den Namen hatte ich zwar schon früher gehört, hatte das aber irgendwie immer auch für eine Art Framework oder CMS-System gehalten. Nach einer Stunde kleinerer Experimente mit Doctrine bin ich aber schwer begeistert von diesem Tool. Abfragen und Ausgaben, wo ich inkl. der Queries 10 bis 20 Zeilen brauchte, ließen sich dank Doctrine auf zwei oder drei Zeilen reduzieren. Zwar ist dafür etwas Vorarbeit nötig, z.B. das Festlegen in PHP-Klassen, welche Datenbanktabelle in welcher Relation mit anderen steht, aber wenn man das erst mal stehen hat flutscht alles von selbst. Die Frage mit der Datenbankanbindung ist somit geklärt. Continue reading

Musik-Sammler.de – Reloaded

Musik-Sammler.de ist mittlerweile fast fünf Jahre alt und läuft ja auch eigentlich recht stabil. Auch wenn es hier und da natürlich immer mal Bugs und Fehler gibt, aber davor ist ja kein Softwareprojekt gefeit. Ich weiß nicht mehr genau wo ich das gelesen habe, aber es hieß ungefähr so schön: Software ohne Fehler gibt es nicht – nur Software wo noch nicht alle Fehler entdeckt wurden. Der größte Teil der PHP Programmierung von Musik-Sammler.de ist noch im großen und ganzen in der Form, wie er vor fünf Jahren entwickelt wurde. Wer allerdings selber Programmierer ist, sei es als Hobby oder beruflich, weiß ganz genau, dass man nach so einer langen Zeit öfter mal ein Stück aus der Schreibtischkante beißt, weil man sich allen ernstes fragt, warum man damals so einen Sourcecode verbrochen hat. Als Programmierer lernt man ständig dazu (sollte man zumindestens) und aktueller Code sieht immer ein kleines Stückchen anders aus als der von vor einem Jahr.

Mit zwei Sachen habe ich beim Start von Musik-Sammler.de nie gerechnet: dass das Projekt so einen guten Zuspruch findet und vor allem welche Ideen über die Zeit von den Mitgliedern vorgetragen wurden. Vieles wurde aus den Ideen und Verbesserungsvorschlägen aufgegriffen und entwickelt und heute ist Musik-Sammler.de ein verdammt komplexes Stück Software. Leider wurde vieles auch „quick and dirty“ programmiert, hier eine Kleinigkeit erweitert, dort eine Funktion hinzugefügt und mittlerweile ist die Programmierung ein gutes Beispiel für „Klebstoffcode“ (so nenne ich es jetzt einfach mal). Es wurde halt vieles hier und da „angeklebt“. Dies führt dann irgendwann dazu, dass Erweiterungen oder Umstrukturierungen im Code nur noch erschwert möglich sind und der eine oder andere Fluch über die Lippen kommt, weil man sich selber ärgert was man für einen Murks irgendwann mal programmiert hat.

Und irgendwann ist dann mal der Punkt gekommen, wo man sich sagt: bis hier hin und nicht weiter. Klar könnte man noch eine ganze Zeit lang so weiter machen. Aber damit tue ich mir a) überhaupt keinen Gefallen mit und b) dauern zukünftige Änderungen oder Erweiterungen immer und immer länger, je mehr noch wieder dazu kommt. Deswegen habe ich mich entschlossen, am jetzigen Code nur noch was zu machen, wenn es darum geht Fehler zu beheben. Ansonsten gilt ein rigoroser Entwicklungsstop und Musik-Sammler.de wird von Grund auf neu programmiert. Das ist zwar ein recht heftiger Schritt, vor allem weil alles nachwievor in meiner Freizeit gemacht werden muss, aber die vernünftigste Entscheidung die ich in dieser Hinsicht treffen kann.

Einige Vorüberlegungen wurden auch schon getroffen, damit das ganze relativ zügig vonstatten gehen kann. Als Grundlage wird diesmal sicherlich ein Framework dienen, das mir schon mal einiges an Basisarbeit abnehmen wird. Außerdem werden dann auch sicherlich einige sogenannte Design Patterns mehr zum Einsatz kommen, was mir in Sachen Erweiterung einige Sachen vereinfachen wird. Demnächst gibt es dazu dann den einen oder anderen Blogeintrag mehr. Vor allem weil ich nach Jahren der aktiven PHP-Programmierung der PHP-Community auch mal etwas in Form von Tipps, Tutorials und Erfahrungsberichten zurückgeben möchte. Wer also demnächst etwas „unter die Haube“ schauen möchte bei der Neuentwicklung von Musik-Sammler.de oder selber in PHP programmiert, der ist herzlich eingeladen unter der Rubrik „Programmierung“ die nächsten Blogeinträge zu studieren.