mrjerk: Frameworks..

Beitrag lesen

Moin,
Ich habe lange Zeit in PHP "von Hand" programmiert, seit kurzem bin ich (auf Grund der positiven Erfahrungen, die ich mit dem Spring-Framework in Java gemacht habe) dabei, mich näher mit Symfony zu beschäftigen. In der Firma haben wir erfolgreich eine Applikation mit Symfony1 umgesetzt, privat arbeite ich gerade an einer Applikation mit Symfony2.

Frameworks haben natürlich immer das Problem, dass man am Anfang erstmal mit dem Framework selbst klar kommen muss, das ging mir bei Symfony nicht anders.
Für kleine Anwendungen mag sich das nicht rentieren.

Die Lernkurve ist aber sehr steil. Hat man einmal grob begriffen, wo alles ist, und wie man was macht, geht es recht fix, der Code wird sehr übersichtlich & kompakt, und die Aufwände für Anpassungen sind IMO deutlich geringer als bei einer komplett "hand-gestrickten" Applikation.

Vor allem muss man nicht zum hundert tausendsten mal so elementare (und gleichzeitig triviale) Sachen wie die Datenbank-Schicht neu erfinden (oder was selbst gestricktes wieder verwenden, was dann aber wieder genau für den Anwendungsfall nicht passt/funktioniert/umgebaut werden muss).

Für mich stellt sich das so dar, dass ich, wenn ich eine große PHP-Anwendung von Grund auf durch und durch sauber und performant programmieren möchte, ein paar Dinge auf jeden Fall brauche, z.b.

  • Hierarchischer und gut gekappselter Aufbau der Applikation (MVC o.ä.)
  • Eine gut & vernüntig gekappselte Datenbankschicht, auf die ich zugreifen
      kann, ohne für jeden Mist SQL bemühen zu müssen
  • Caching
  • Logging
  • Konfigurations-Management
  • Testbarkeit
    usw.

Dann kommen (nicht immer, aber oft) noch so Dinge wie Zugriffsschutz, sprechende URLs, Benutzerverwaltung usw. hinzu.

Wieso sollte ich mir das alles selbst programmieren, wenn Frameworks wie Symfony das "out-of-the-box" mitbringen?

Ich habe mir Symfony2 mal näher angeguckt. Ich sag mal, ich finde das ziemlich abtörnend mit der ganzen Konfiguration.

Eigentlich verfolgt Symfony (ähnlich wie Ruby on Rails, Django o.ä.) einen "Convention over Configuration"-Ansatz. Man muss eigentlich nur sehr wenig konfigurieren (konkret eigentlich nur die Datenbank-Connection ;) ), alles andere macht das Framework automatisch, es sei denn, Du legst es konkret darauf an, etwas anders machen zu wollen.

So long,
Jörg