Projektwerkstatt: Symfony-Konfigurator
Die meisten meiner Artikel schreibe ich ja vor, was sicherlich klar sein sollte, da ich bestimmt nicht jeden morgen um sechs aufstehen will, um noch einen Artikel bis 8 Uhr fertig zu bekommen. Im Moment sitze ich gerade am Hamburger Flughafen, schaue mir Flugzeuge an und warte auf meinen eigenen Flug nach Freiburg. Und warum sollte man die Zeit nicht nutzen, um einen Artikel zu verfassen.
Wie ihr ja wisst, komme ich immer öfters berufsbedingt in Kontakt mit dem symfony Framework. Codegenerierung finde ich auch eine feine Sache. Dass man in symfony nur mit einem Befehl und einem Config-File einen kompletten Adminbereich erstellen kann, finde ich auch wunderbar.
Zumindest klingt es wunderbar. Womit ich noch Probleme habe, sind die Konfigurationsdateien. Ich habe gefühlte 1.000.000 Parameter, die ich angeben kann und all diese muss ich in eine Yaml Datei packen. Ich sehe viele Vorteile von Yaml gegenüber xml, aber bei großen strukturierten Konfigurationen würde meiner Meinung klar xml gewinnen. Eine XSD geschrieben und schon kann einem fast jede IDE behilflich sein ein valides File zu produzieren. Bei Yaml hilft einem niemand. Zumindest ist das mein Gefühl. Wir haben also Yaml Files, da kann man jetzt nichts dran ändern. Wollte mich nur mal eine Runde auskotzen.
Der Weg hin zu dieser Yaml Datei soll heute im Mittelpunkt stehen. Warum gibt es kein Hilfsprogramm, am besten mit grafischer Oberfläche, das mir behilflich bei der Erstellung ist (ich weiß, es klingt wie der typische Linux vs. Windows Bash)? Sollte doch eigentlich gar nicht so schwer sein. Ein paar Checkboxen, ein Modell auswählen und fertig. Könnte man sogar schön zentral über ein PHP Programm erledigen. Ich könnte mir vorstellen, dass eine Webseite, die einen solchen Konfigurator anbietet schnell bei symfony verlinkt wird und somit echt hoch frequentiert sein sollte.
Ja, das wäre wirklich mal ein nettes Tool.
Ich habe aber bei den Generatoren noch eine Kleinigkeit die mich ärgert: Der generierte Code (z.B. eines Models) ist nicht im javs code style. Man müsste die Möglichkeit haben, das Format des Code Outputs zu formatieren. Es nervt einfach jedesmal den Code umformatieren zu müssen ='(
Eigentlich könnte man doch da ganz einfach den CodeBeautifier verwenden. Den müsste man nur irgendwie dazwischenschalten.
Klingt gut. Schönes Tool =)
Mal sehen, ob ich damit was hinbekomme.
@ghost: Sag bescheid, wenn du was gebastelt hast, dann stellen wir das hier zum Download oder verlinken deinen Blog.
Jup, gerne. Ich ging mal davon aus, dass du dieses Tool hier gemeint hast, oder? http://www.waterproof.fr/products/phpCodeBeautifier/
Nur doof, dass man sich dort registrieren muss =/
Ja genau das meinte ich. Wusste aber auch nicht mehr, dass man sich registrieren muss.
*grml* wie ich sowas hasse. Ne schöne, funktionierende Alternative habe ich leider auch nicht gefunden. Werde mich nochmal damit befassen wenn ich mehr Zeit habe.
Ich schätze die YAML-Konfiguration in symfony sehr, da die Angaben sehr kompakt, gut zu kopieren und vor allem auszukommentieren sind. Auch die in den Konfigurationsdateien möglichen PHP-Schnippsel empfinde ich als sehr nützlich und in XML kaum realisierbar (von einer Unterstützung durch IDEs ganz zu schweigen). Das Argument der zahlreichen möglichen Einstellungen zählt für mich nicht, wenn wie in der settings.yml alle Werte bereits (auskommentiert) aufgelistet werden und nur geändert werden müssen.
Beim Schema ist YAML optional, Reverse Engeneering von Datenbanken möglich, dort sehe ich YAML nur als Bereicherung. Was bleibt, ist der Admin Generator. Hier verstehe ich völlig, wenn die Optionen jemanden in den Wahnsinn treiben. Die gesamte Konfiguraiton findet in einer einzigen Datei statt, die Verschachtelung ist irrsinnig, die Werte kaum dokumentiert, das Endergebnis per default eine Qual. Allein die regelmäßig auftauchende Frage, wie man eigentlich das verdammte floatende Filter-Formular los wird, sind für mich ein Indiz, dass etwas nicht stimmt. Fehlende oder zwischen Versionen umbekannte Feldtypen (plain? file_upload_tag?) versprechen tagelange Unterhaltung. Das uralte Admin-Cheat-Sheet, die restliche Doku und das gar nicht symfony-mäßige Layout/CSS-Paralleluniversum zeugen davon, welches Interesse dieser Aspekt des Projekts überhaupt genießt.
Ich glaube aber nicht, dass eine geschwätzigere XML-Notation das Problem irgendwie beheben würde. Der Admin-Generator müsste imho viel näher an die „normale“ CRUD-Funktionalität heranwachsen, möglicherweise gar nicht mehr deklarativ konfiguriert werden. Als Beweis der Leistungsfähigkeit von sf 1.0 war der Generator cool, aber der praktische Nutzen heute ist eingeschränkt — egal wie er jetzt konfiguriert wird. Nur meine Meinung.
Was ich zur Erleichterung der Arbeit vermisse, sind ganz andere Dinge, wie z. B. Projekt-Templates, eine Projekterstellung mit Parametern/Assistent (Name und Mail, Propel/Doctrine, SQLite/MYSql/…, sfGuard), die Entfernung des App-Layers, Migrations, brauchbares Deployment, …
Mich würde mal ein Vergleich zwischen dem Zend und dem Symphonie Framework interessieren.
Bei mir in der Firma steht bald eine Neuentwicklung eines CMS mit Shop etc. an.
Welches Framework bietet dafür die besseren Möglichkeiten?
@Timo: Ich tippe mal drauf, dass beide Frameworks sich nichts schenken. Aber ein eigenes CMS/Shop würde ich mit beiden nicht programmieren 😉
Was würdest du denn empfehlen um ein CMS/Shop zu programmieren?
@rbq: Danke übrigens für deinen ausführlichen Kommentar.
@Timo: In die engere Auswahl kommen vermutlich Magento (basiert auf dem Zend Framework) und eZ Publish (E-Commerce-Features teils enthalten, teils kostenpflichtig).
Danke für die Tipps.
Aber es sind ja bereits fertige Systeme.
Wir planen ein Komplett neues CMS mit Shop zu entwickeln (Ich weiß nicht das Rad neu erfinden, aber wir haben bereits unser eigenes Rad und wollen dies verbessern ;)).
Evt. könnte die YAML component aus den Symfony-components hilfreich sein um einen converter zu schreiben.
http://components.symfony-project.org/yaml/
greetz