<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Malte's Blog &#187; mvc</title>
	<atom:link href="http://www.maltesieb.de/tag/mvc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.maltesieb.de</link>
	<description></description>
	<lastBuildDate>Fri, 06 Jan 2012 23:26:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP-Framework CodeIgniter durchleuchtet</title>
		<link>http://www.maltesieb.de/php/php-framework-codeigniter-durchleuchtet/</link>
		<comments>http://www.maltesieb.de/php/php-framework-codeigniter-durchleuchtet/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 02:24:27 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[applikationen]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[dry]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[projekte]]></category>

		<guid isPermaLink="false">http://maltesieb.de/?p=38</guid>
		<description><![CDATA[Vor ein paar Tagen wurde ich auf das PHP-Framework CodeIgniter aufmerksam. Nachdem ich mir die Propaganda auf der Startseite und den Beginn der Dokumentation durchgelesen hatte, war ich überzeugt, dass CodeIgniter der richtige Ansatz für zukünftige kleinere Projekte ist. Die Seite wirbt u.a. mit guter Performance, Kompatibilität zu konventionellen Webspace&#8217;s, wenig Konfigurationsaufwand, keiner Kommandozeile, simplen [...]]]></description>
			<content:encoded><![CDATA[<p>Vor ein paar Tagen wurde ich auf das <a href="http://codeigniter.com/" target="_blank"><strong>PHP-Framework CodeIgniter</strong></a> aufmerksam. Nachdem ich mir die Propaganda auf der Startseite und den Beginn der <strong>Dokumentation</strong> durchgelesen hatte, war ich überzeugt, dass <strong>CodeIgniter</strong> der richtige Ansatz für zukünftige <strong>kleinere Projekte</strong> ist. Die Seite wirbt u.a. mit guter Performance, Kompatibilität zu konventionellen Webspace&#8217;s, wenig Konfigurationsaufwand, keiner Kommandozeile, simplen Lösungen und guter Dokumentation. Auch die <strong>Screencasts</strong> waren interessant und so habe ich den Code heruntergeladen und das Ganze mal unter die Lupe genommen &#8230;<span id="more-38"></span></p>
<p>Das Framework ist in ein einziges Archiv gepackt und kann einfach in den Zielordner entpackt werden. Der <strong>Verzeichnis-Aufbau ist übersichtlich</strong>. Wie bei anderen Frameworks auch, spielt sich alles im &#8220;application&#8221;-Verzeichnis ab. Dort findet man die übliche <strong>MVC</strong>-Unterteilung und die übrigens sehr gelungene und einsteigerfreundliche Dokumentation fordert einen auf, den ersten <strong>Controller</strong> zu schreiben, der über das erste Segment in der URL (wie z.B in: example.com/segment1/segment2) angesprochen wird. Dort definiert man eine index-Methode, welche aufgerufen wird, wenn kein 2. Segment in der URL vorhanden ist bzw. andere Methoden für das entsprechende Segment.</p>
<p>Der eingebene Code funktioniert unmittelbar. Es ist also bis dato keinerlei Konfiguration nötig. Sofern Datenbankzugriff erforderlich ist, kann es in der config eingestellt werden und wird in der entsprechenden Klasse/Methode mit einem Funktionsaufruf geladen. Das Laden der einzelnen Libraries und Helper ist zwar immer ein Mehraufwand bei der Programmierung, aber die Schonung der Ressourcen macht es wieder wett. Das Framework stellt noch viele weitere <strong>Konfigurationsmöglichkeiten</strong> bereit, wie das Einstellen von URL-Routings, Core-Hooks, Autoloads etc. Auch die Vielzahl der <strong>Libraries</strong> und <strong>Helper</strong> soll einem das Programmieren erleichtern.</p>
<p>Sehr interessant fand ich das sog. &#8220;<strong>scaffolding</strong>&#8220;-Feature, welches anhand einer Tabellen-Struktur ein <strong>Admin-Backend</strong> generieren kann. Leider fehlt es hier an jeglichen Konfigurationsmöglichkeiten, weswegen man schon hier an die ersten Grenzen von CodeIgniter stößt. So kann man z.B. keine Feldnamen vergeben (Tabellen-Kommentare werden nicht genutzt) und auch sonst nur den Standard-Aufbau nutzen. Das macht die Nutzung für ein Backend meines Erachtens unnütz.</p>
<p>Die Dokumentation ist klar gegliedert und richtet sich offensichtlich an PHP-Einsteiger. Es wird von der Pieke auf erklärt und man hat keine Schwierigkeiten, sich schnell in das Framework einzuarbeiten. Alle Klassen und Helper werden erklärt, es ist eine übersichtliche Gliederung und ein Reference Chart vorhanden. Es gibt viele Funktionen, die einem die Programmierarbeit enorm erleichtern, z.B. automatischer Aufbau von HTML-Tabellen anhand eines mehrdimensionalen Arrays, Einfügen von Datensätzen anhand eines Arrays, es gibt eine umfangreiche Formular-Validierung usw.</p>
<p>Die Einsteigerfreundlichkeit geht allerdings auch zulasten der Sicherheit und der Performance. In der Dokumentation und vor allem in den Screencasts bleibt die Sicherheit nur ein nebensächliches Thema. Es wird zwar z.B. genannt, dass spezielle Datenbank-Funktionen automatisch die Werte escapen, allerdings wird das nur als Notiz am Rande dargestellt. Außerdem fehlte mir eine Funktion, um Werte für die HTML-Ausgabe vorzubereiten (nl2br, htmlspecialchars &#8230;). Zudem werden Session-Daten in der Standard-Konfiguration im Klartext als Cookie gespeichert und man muss erst Encryption aktivieren bzw. eine Tabelle für die Nutzung als Session-Tabelle anlegen. Die Performance bleibt sicher auch auf der Strecke, wenn vereinfachende Funktionen wie die o.g. Tabellen-Generierung oder Query-Bau berechnet werden muss und nicht einmal gecached wird.</p>
<p>Bei der Nutzung von <a href="http://codeigniter.com/" target="_blank">CodeIgniter</a> stößt man sehr schnell an Grenzen, für größere Projekte sehe ich es als <strong>gänzlich ungeeignet</strong>. Für <strong>kleinere Applikationen</strong> ist CodeIgniter allerdings sehr gut geeignet, da es sehr <strong>einsteigerfreundlich</strong> ist und man sich wirklich innerhalb kurzer Zeit eingearbeitet hat. Zudem ist es <strong>kompatibel zu PHP4</strong> und benötigt keinerlei besondere Server-Bedingungen, sodass man es problemlos auf fast jedem Webspace einsetzen kann. Die Versprechungen, mit denen geworben wird, werden auf jeden Fall größtenteils eingehalten. Wer mehr Flexibilität und eine höhere Skalierbarkeit braucht, ist mit einem alternativen Framework auf jeden Fall besser geraten.</p>
<p>Ich werde CodeIgniter demnächst bei einem kleinen regionalen Projekt einsetzen, dennoch werde ich mir nun einmal <a href="http://www.symfony-project.org/" target="_blank"><strong>Symfony</strong></a> angucken, was mir wesentlich flexibler und komplexer erscheint, aber auch mehr Einarbeitungsaufwand benötigt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maltesieb.de/php/php-framework-codeigniter-durchleuchtet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

