PHP Frameworks

Frameworks – So gut wieder jeder Entwickler nutzt einige davon um bestimmte Probleme schnell und effizient zu lösen. Doch ist die Auswahl durch die Vielzahl der Möglichkeiten mitterweile recht schwierig geworden. In unserer Reihe „PHP-Frameworks“ wollen wir euch in den nächsten Monaten einige der wichtigsten Frameworks für die Programmiersprache PHP vorstellen, ihre Kernmerkmale herausarbeiten und Argumente für oder gegen ein Framework zusammentragen.


Doch zunächst wollen wir kurz über Frameworks allgemein sprechen.

Frameworks – Eine Einleitung

Früher war die Internetwelt noch einfach. Wenn man im Web den Inhalt einer Seite ändern wollte, musste man die Änderungen statisch in den HTML Code tippen und war fertig. Das war simpel und genügte den Anforderungen der Zeit. Heutzutage, in Zeiten von Mit-Mach-Internet, komplexen Webapplikationen und stetigem Wandel im World Wide Web, sieht man sich als Webentwickler mit größeren Herausforderungen als nur statischem HTML Code konfrontiert. Eine moderen Internetseite wird mittlerweile von einer Vielzahl von Personen betreut: Entwicklern, Administratoren, Redakteuren, und wer weiß wer noch alles. Hinter den Websiten stecken nun nicht mehr nur HTML und CSS Inhalte zur Darstellung, sondern hohe Programmiersprachen, welche den Content generieren, die Daten pflegen und Nutzeranfragen bearbeiten. Dementsprechend aufwendig gestaltet sich die Entwicklung solcher Websiten. Wie schafft man es als Entwickler diesen Ansprüchen gerecht und eine schnelle, robuste, ansprechende und auf lange Sicht wartbare Webanwendung zu schaffen? Die Lösung für dieses Problem nennt sich Framework, und davon gibt es mittlerweile genauso viele wie Sand am Meer.

Was sind Frameworks?

Ein Framework (aus dem engl.: Rahmen, Gerüst) ist eine Sammlung von Werkzeugen, Bibliotheken und anderen Softwarekomponenten, welche dem Entwickler einer Software generische Funktionen für die Anwendungsentwicklung zur Verfügung stellen. Oder einfacher ausgedrückt, handelt es sich bei Frameworks um Teile einer Software, welche anwendungsunabhängig immer wieder genutzt werden können.

Dadurch soll der Entwickler weniger Arbeit in das Gerüst der Software investieren müssen und mehr Zeit für Business-Logik und anwendungsspezifische Funktionen haben.

Dabei sammelt sich in einem Framework so ziemlich alles, was die Anwendungsentwicklung erleichtert. Häufig setzen Frameworks dabei eine bestimmte Architektur der Anwendung voraus, wodurch der Entwickler gleichzeitig zu einem strukturierten Aufbau während der Entwicklung angehalten wird.

Wer braucht Frameworks?

Es gibt unterschiedliche Argumente für und gegen die Nutzung eines Frameworks. Dabei spielen die Komplexität der Software, die Erfahrungen der Entwickler, das Budget des Projekts sowie Performanceansprüche – um nur einige zu nennen – eine wichtige Rolle.

Argumente für Frameworks:

  • Entwicklungsaufwand

Durch den Einsatz von Frameworks sinkt der Entwicklungsaufwand enorm. In kaum einer Situation ist die Einarbeitungszeit in ein Framework höher als der Aufwand, um das Problem von Null auf selber zu lösen.

  • Gut für wechselnde Teams

Frameworks erfordern (manchmal mehr, manchmal weniger streng) eine bestimmte Struktur und Architektur des Projekts. Dadurch können sich neue Entwickler, die zu dem Projekt stossen, schneller in den Code einarbeiten und einen Überblick gewinnen.

  • Dokumentation

Ein gutes Framework zeichnet sich durch eine gute Dokumentation aus. Dadurch wird die Funktionsweise der einzelnen Komponenten jedem Entwickler schnell klar. Leider kann man dies nicht immer über den innerhalb eines Projekts selbst geschriebenen Code behaupten, was die Entwicklung und Wartbarkeit bei komplexeren Projekt massiv erschwert.

  • Community Support

Viele Frameworks erfreuen sich einer aktiven Community, welche einem bei speziellen Problemen zur Seite steht.

Argumente gegen Frameworks:

Für wirklich kleine Projekte sind Frameworks manchmal zu überladen und verschlechtern die Performanz oder benötigen höheren Einarbeitungsaufwand als die Entwicklung ohne ein Framework benötigen würde. Dies ist aber nur der Fall, wenn man noch keine Erfahrungen mit dem Framework gesammelt hat. Es gibt zudem sehr schlanke Framework, welche nur grundlegende Funktionalitäten bieten und damit schon bei kleineren Projekten sinnvoll sind.

Für weitere Gegenargumente und Erklärungen dazu, empfehle ich diesen Blogbeitrag von Ralph Eggers.

Was zeichnet ein gutes Framework aus?

Da Frameworks für unterschiedlichste Ansprüche entwickelt wurden, ist dies nicht so leicht zu beantworten. Einige Kriterien gelten für alle Frameworks gleichermaßen, wie z.B Dokumentation, Aktivität der Community, Stabilität, unter welcher Lizenz wurde das Framework veröffentlicht?

Andere Kriterien jedoch hängen vom Projekt selbst ab, z.B die benötigten vs bereitgestellten Features, Performanz, Architektur und andere technische Aspekte.

Wie wähle ich das richtige Framework für mein Projekt?

Leider gibt es dafür kein Patentrezept. Hilfreich ist es, wenn man bereits Erfahrungen mit unterschiedlichen Frameworks gesammelt hat und ihre Vor und Nachteile einschätzen kann. Daher empfiehlt es sich, häufig unterschiedliche Frameworks für kleine Projekte auszuprobieren.

Um die Auswahl etwas zu erleichtern, kann man ein Anforderungskatalog erstellten, welches die benötigten und gewünschten Ansprüche an das Framework sammelt. Somit lassen sich verschiedene Alternativen leicht durch einen Blick auf die Featureliste aussortieren und auf eine kleine Auswahl beschränken.

Eine weitere Möglichkeit ist, sich Informationen über das Framework aus unabhängigen Quellen zu besorgen und verschiedene Meinungen zu vergleichen. Ob diese Wertungen am Ende mit der eigenen Meinung konform gehen und wirklich objekt sind, ist eine andere Frage.

Frameworks in PHP

Für PHP gibt es eine kaum noch überschaubare Anzahl an Frameworks. Einen guten Überblick bietet diese – natürlich nicht vollständige – Liste, welche sich aus einer Umfrage nach den meist genutzten Frameworks auf Entwickler.de ergibt:

#

Framework

Stimmen

#

Framework

Stimmen

1

Yii

1320

17

Adventure PHP Framework

11

2

Symfony

921

18

DIY

10

3

Laravel

547

19

php-mvc

6

4

Phalcon

546

20

eZ Components

5

4

Zend Framework 2

546

21

PHPDevShell

3

6

CakePHP

385

21

ZooP

3

7

TYPO3 Flow

184

23

Phavour

2

8

Anderes

155

23

QPHP

2

9

CodeIgniter

123

23

Seagull

2

10

Zend Framework 1

101

26

Akelos

1

11

Slim

99

26

ash.MVC

1

12

Silex

62

26

Fusebox

1

13

Kohana

34

26

PHP on TRAX

1

14

Prado

29

26

PhpObenbiz

1

15

Aura

24

31

WACT

0

16

Pear

13

32

WASP

0

Quelle

Einige wichtige Vertreter aus dieser Liste werden wir in den nächsten Monaten genauer untersuchen.

Nachtrag: Ein Blog-Eingrag über das Zend Framework wurde bereits von uns veröffentlicht.