am 24. März 2010
Manch einer mag denken “Noch ein weiteres PHP Framework”, aber CodeIgniter, kurz CI genannt, hat dann doch einige Alleinstellungsmerkmale.
Wenn du keine Frameworks magst, da du der Meinung bist, dass sie zu viel Performance benötigen, schwierig zu installieren sind, oder spezielle Anforderungen an das System stellen hast du CI noch nicht getestet.
Die einzige Systemvorraussetzung die CI hat, ist ein System mit einer PHP Version ab 4.3.2, wobei man jedoch auch auf Basis von PHP 5 entwickeln kann und dessen Vorteile genießen darf. CI selbst nutzt unter PHP 5 zum Beispiel die Möglichkeit seine Basis Klasse per self::$instance anzusprechen und bietet auch die Möglichkeit bei der Erstellung von Datenbankabfragen per active record die Methoden zu verketten (method chaining):
$this->db->select('title')->from('mytable')->where('id', $id);
Vorteile von CodeIgniter
- Unterstützung von PHP 4 – wenn man es benötigt – und Installation ohne Konsolenzugriff. Es werden auch keine externen Libraries oder PEAR benötigt.
- Sehr gute Performance im Vergleich zu anderen Framworks Test von avnetlabs (EN) pr0digy (EN)
- Geringer Ressourcenverbrauch, da Libraries erst geladen werden, wenn diese benötigt werden.
- CI zwingt einen keinen bestimmten Programmierstil auf – es wird jedoch klar ein MVC Ansatz angestrebt.
- Kein bestimmtes, oder wenn gewünscht auch gar kein, Template System.
- Unterstützung durch die Community Forum IRC codeigniter.ch User Guide
Allgemeines
CodeIgniter wird seit Februar 2006 von EllisLab Inc. entwickelt und ist im Rahmen einer an Apache/BSD angelehnten Lizenz nutzbar. License (EN)
EllisLab entwickelt dabei die Version 2.0 ihres kommerziell vertriebenen CMS ExpressionEngine auf Basis von CodeIgniter.
In CI Version 2, das sich aktuell in Entwicklung befindet, wird der PHP 4 Support deprecated sein.
Neue Funktionen werden nur mehr PHP 5 kompatibel entwickelt. Ab CI 2.1 soll PHP 4 nicht mehr unterstützt werden.
Wenn man auf der Suche nach einem freien CMS auf Basis von CI ist -
PyroCMS ist aktuell bereits als RC 1 Version 0.9.8 erhältlich.
Vergleich
|
CodeIgniter |
Zend Framework |
CakePHP |
| Installation |
Ein einfaches entpacken der ZIP Datei reicht dazu vollkommen aus. Diese umfasst dabei auch nur etwa 2,2MB
inklusive User Guide. |
Nach dem Entpacken muss man noch mittels dem command line Tool zf ein Projekt anlegen. Das Framework ist bereits
beim Download sehr gewaltig und benötigt zwischen 5,7MB und 24MB. |
Die Installation gestaltet sich gleich einfach wie bei CI. Die Zip Datei umfasst dabei gerade einmal 1,3 MB, jedoch ohne Handbuch. |
| Dokumentation |
Die Dokumentation bei CI ist ausführlich und sehr gut strukturiert. Antworten auf speziellere Fragen findet man dabei auch im Wiki. Teile wurden bereits auf Deutsch übersetzt. |
Das Zend Framework hat eine sehr umfangreiche Dokumentation die zum Teil auch auf Deutsch erhältlich ist. Man sollte dabei aber schon wissen, wonach man sucht. Ansonsten hilft noch der “Quick Start Guide”. |
Auch CakePHP hat eine umfangreiche Dokumentation. Jedoch ist sie nicht so schön strukturiert und beinhaltet auch nicht immer viel mehr als die
API Dokumentation. Das Cookbook ist auch auf Deutsch erhältlich. |
| Konfiguration |
Ein Verzeichnis beinhaltet mehrere Konfigurationsdateien auf PHP Basis. Weitere Dateien können sehr einfach angesprochen werden. |
Das Zend Framework kennt nur eine einfache application.ini in der einige grundlegende Einstellungen abgelegt werden. Weitere Dateien können jedoch über die Zend_Config_* angesprochen werden. |
CakePHP nutzt eine Konfigurations-Klasse im Gegensatz zu den einfachen PHP Arrays von CI. |
| Anzeige |
Codeigniter verwendet PHP Dateien zur Anzeige. Weiters bietet es einen Template Parser und auch die Einbindung von zum Beispiel Smarty ist problemlos möglich. |
Zend verwendet auch einfaches PHP zur Anzeige, nutzt jedoch eine spezielle Layout Klasse (optional). Jedoch kann man auch z.B. Smarty als Template Engine integrieren. |
CakePHP verwendet einen relativ fixen Layout Ansatz mit einigen Automatismen. Weiters nutzt es CakePHP Temples (.ctp).
Die Verwendung von Smarty ist möglich, jedoch aufwendig und eher unüblich. |
| Datenbank |
CI bietet standardmäßig eine Abstraktion für unterschiedliche RDBMS (MySQL, PostgreSQL, Mssql, SQLite, Oracle als auch ODBC) und eine Active Record Klasse.
Wenn man statt CRUD lieber ORM nutzen möchte kann man dazu z.B. IgnitedRecord verwenden. Daraus ergibt sich eine hohe Flexibilität. |
Zend_Db unterstützt PDO für IBM DB2, MySQL, Mssql, Oracle, PostgreSQL und SQLite als auch Firebird und andere RDBMS ohne PDO Unterstützung. ORM wird z.B. über Table Data Gateways unterstützt. |
CakePHP unterstützt IBM DB2, Firebird, Mssql, MySQL, Oracle, PostgreSQL, SQLite, Sybase als auch AdoDB und ODBC.
CakePHP verwendet Associations (Beziehungen) zwischen Models (z.B. hasMany) um daraus Datenbank- abfragen zu erstellen. Um dies zu ermöglichen müssen jedoch einige Konventionen eingehalten werden. |
Wenn Ihr nun Lust auf CodeIgniter bekommen habt – Ein Artikel über das Entwickeln mit CI folgt in Kürze!
Ich freue mich schon auf Kommentare von Nutzern anderer Frameworks.