phpbar.de logo

Mailinglisten-Archive

[php] 'portables', kleines framework

[php] 'portables', kleines framework

Carola 'Sammy' Kummert a-cappella at gmx.de
Mit Mar 4 11:15:30 CET 2009


Moin,

Henning Heil wrote:
> neulich habe hier ich eine ganz herrliche Liste mit php-frameworks gefunden
> http://woork.blogspot.com/2008/11/20-great-php-framework-for-developers.html

schicke Liste :) Enthaelt zwar nicht alles, was an Frameworks fuer PHP 
so durchs Web kursiert, aber doch eine ganze Menge (auch sehr 
unterschiedlicher) Ansaetze.

> nur ersehe ich aus der ganzen tollen Liste nicht so unbedingt, welches 
> framework denn für meine Zwecke am besten geeignet ist. Ne Wikimatrix 
> für php-frameworks wäre gut :-).

Schreib eine und poste den Link :)

> - OOP, MVC sind die basics, kann ich mir nicht anders vorstellen
> - ein DB abstraction layer macht vieles leichter

DB-Abstraction ist nur bedingt nuetzlich - der Normalfall ist, dass du 
als Entwickler weiszt, fuer welche Plattform deine Anwendung gedacht 
ist und Queries plattformabhaengig optimierst. Nun unterscheiden sich 
Optimierungsmoeglichkeiten (und auch die Implementierungen der 
verschiedenen SQL-Standards sowie zusaetzlicher Features) der 
jeweiligen Datenbanken teilweise doch recht drastisch voneinander, 
daher zahlt sich eine Abstraktionsebene bestenfalls aus, wenn man ein 
OS-Multiplattform-Projekt startet.

> - eine template engine muss nicht sein, SMARTY mag ich wenn am liebsten

Smarty ist ... diskussionsfaehig. Nett zum Einsteigen in die Materie, 
praktisch bei groeszeren Anwendungen nur bedingt einsetzbar. Das geht 
bei expliziter Zuweisung von Variablen an Templates los, die der 
Programmierer taetigen muss und endet irgendwo beim Thema 
Performancetuning. Kann man alles machen, muss man aber nicht. Fuer 
Kleinprojekte mit absehbar wenig Changes in der Oberflaeche mags angehen.

> - user-role-management & session-handling etc. ist Pflicht
> - der ganze Sicherheitskram sollte mir bis auf die input-Validierung 
> abgenommen werden, bei letzterem sollte mich das framework unterstützen
> - ein klein wenig Erfahrung habe ich mit cakePHP, das kommt mir aber 
> (insgesamt für diese kleine App zu) mächtig vor

Was ist denn in deinem Fall die "kleine App"? Nur mal der 
Einschaetzung halber ... Letztlich ist es durchaus ein Unterschied, ob 
man ein Framework fuer das Aufsetzen von anderthalb 
Standardfunktionalitaeten benoetigt oder ob man damit ganze 
Hochlastportale a la Yahoo baut - die Anforderungen, die bei letzterem 
  entstehen, haben nur noch wenig mit dem erstgenannten Szenario gemein.

> - irgend welcher Kram mit Konsolen a la RoR geht garnicht, PHP im 
> Texteditor ist gut für mich

Wenn du Rails nicht magst, ist vermutlich Symphony auch nichts fuer 
dich, das ist im Prinzip eine Rails-Nachbildung. Wie ueblich noch ein 
wenig pessimiert in der Art der Umsetzung, aber die Community ist 
nett. Btw, ist der Symphony-Hype inzwischen eigentlich wieder ein 
bisschen abgeklungen?

> - das ist wahrscheinlich ein Wunschtraum, aber eine Größe von unter 
> 500-800kB ohne App wäre doch toll

Depends. Also genau genommen: Die Frage ist, was das Framework zur 
Laufzeit so alles laedt. Was und wie es Dinge zwischenspeichert (auch 
ueber mehrere Requests und User etc hinweg). Wieviel Last du damit 
abfackeln kannst, wie stabil die Codebase ist, wie oft APIs geaendert 
werden und und und. Was nuetzt ein Framework, das bei jedem Aufruf 
erstmal 600 k von der Platte liest, parst und abarbeitet? Da wird 
definitiv nichts fixes draus. Mag sein, ein Framework hat ein paar MB 
Inhalt - aber wenn es eben nur wenige kB je Aufruf einliest und diese 
Codebase dann auch noch stabil und robust geschrieben ist, hat man 
daran deutlich mehr Spaß. Du musst ja an einem Framework im Normalfall 
nichts mehr machen, sondern nur noch deine eigene Anwendung 
draufsatteln ...

> - zweit wichtigstes Kriterium: eine gut funktionierende community, ich 
> werde viele noob-Fragen haben

Das kickt ein paar schicke Frameworks, die leider nur mittelpraechtig 
mit Doku und Community gesegnet sind. (Wobei sich das deutlich bedingt 
- gute Doku animiert dazu, ein Produkt zu nutzen ... aber das ist eine 
andere Baustelle).

> - wichtigestes Kriterium: meine ganze App soll nur eine config-Datei 
> haben und sich ratzfatz in ein Zip packen und verteilen lassen (und auf 
> den meisten Standard php5/mysql-Umgebungen laufen)

Das mit der einen Config-Datei kann je nach Framework-Design zu 
Problemen fuehren - wenn ich mir ein modulares Framework vorstelle, in 
der es zwar eine "Zentralconfig" gibt, aber die einzelnen Module im 
Zweifelsfall noch eigene Konfigurationsmoeglichkeiten mitbringen, kann 
das zum Beispiel den Vorteil haben, dass fuer das Modul explizit 
andere Umgebungsvariablen definiert werden koennen, die nur dann 
interessant werden, wenn dieses Modul auch aktiv im Code 
genutzt/angesprochen wird.

Eine einzige Config kann ziemlich stark aufgeblasen werden, wenn man 
darin jede Menge unterschiedlicher Module mit Parametern versieht - 
auch wenn man sie fuer den gerade anstehenden Aufruf nicht benoetigt. 
Allerdings reden wir hier von einem Framework, und das bedeutet von 
Hause aus meist zusaetzliche Abstraktionsebenen und Latenzen, nur 
selten sind Frameworks auf Geschwindigkeit getrimmt.

> P.S.: eine Bitte: bestimmt kann man ganz toll riesen Diskussionen über 
> frameworks führen und tausend Details vergleichen und abwägen und über 
> architekturelle Feinheiten streiten, ich bräuchte aber eher pragmatisch 
> Hilfe nach obigen Kriterien ('das könnte was sein', 'das ist deswegen 
> vermutlich eher nichts').

Dann werfe ich hier direkt mal praktisch verwertbare Tipps nach:

Zend Framework ist super. So als Marketingding. In der Praxis freut es 
mich auch immer, weil es bedeutet, dass ich Arbeit bekomme ;) (Fakten: 
Instabil, uneinheitliche API, langsam, ich weiß nicht, warum sie einen 
Quality-Manager fuer das Ding haben, Codequalitaet ist fuer mich was 
anderes.)

Symphony macht nur Spaß, wenn du RoR magst, das aber in PHP haben willst.


Praktischer Tipp:

Schnapp dir die Frameworks, die dir auf der Liste interessant 
erschienen, versuche, sie zum Laufen zu bringen und damit Dinge zu 
realisieren. Benchmarke vergleichbare Endergebnisse. Ueberlege dir, 
wieviel Einarbeitungsaufwand du jeweils hattest, wie gut das Ding 
vermutlich skaliert und wieviele Projekte du damit umsetzen wirst. 
Wenn du das Gefuehl hast, aus dieser Mischung etwas zu bekommen, das 
sich fuer dich gut anfuehlt, bist du vermutlich auf dem richtigen Weg.


HTH

Carola 'Sammy' Kummert

php::bar PHP Wiki   -   Listenarchive