<?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>Ersocon.net - Science Blog &#187; Zend Framework</title>
	<atom:link href="http://blog.ersocon.net/tag/zend-framework/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.ersocon.net</link>
	<description>Zend Framework, PHP, Java</description>
	<lastBuildDate>Thu, 08 Jul 2010 11:53:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ubuntu für das Zend Framework konfigurieren</title>
		<link>http://blog.ersocon.net/ubuntu-fur-das-zend-framework-konfigurieren-pid20.html</link>
		<comments>http://blog.ersocon.net/ubuntu-fur-das-zend-framework-konfigurieren-pid20.html#comments</comments>
		<pubDate>Wed, 03 Mar 2010 21:11:18 +0000</pubDate>
		<dc:creator>ersocon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.ersocon.net/?p=20</guid>
		<description><![CDATA[Aus aktuellem Anlass &#8211; einer Neuinstallation meines Systems &#8211; möchte ich euch die Schritte erklären, die zu einer lokalen LAMP (Linux Apache MySQL und PHP) Entwicklungsumgebung für Zend-Framework Projekte unter Ubuntu 9.10 Karmic Koala führen.
Ein fertiges Linux-System solltet ihr mit Ubuntu ja bereits besitzen. D.h. den nächsten Schritt, den man gehen muss, ist den Apache-Server [...]]]></description>
			<content:encoded><![CDATA[<p>Aus aktuellem Anlass &#8211; einer Neuinstallation meines Systems &#8211; möchte ich euch die Schritte erklären, die zu einer lokalen LAMP (Linux Apache MySQL und PHP) Entwicklungsumgebung für Zend-Framework Projekte unter Ubuntu 9.10 Karmic Koala führen.</p>
<p>Ein fertiges Linux-System solltet ihr mit Ubuntu ja bereits besitzen. D.h. den nächsten Schritt, den man gehen muss, ist den Apache-Server zu installieren. Unter Ubuntu bewerkstelligt man dies in der Console mit dem einfachen Aufruf</p>
<pre class="brush:shell">sudo apt-get install apache2</pre>
<p>Eine Internetverbindung vorausgesetzt, solltet ihr nun die Download-, Installations- und Konfigurationsroutine sehen. Um zu überprüfen, ob der Apache nach der Installation läuft, öffnet einen Browser eurer Wahl und versucht die Adresse http://127.0.1.1 aus. Ihr solltet etwas in der Art &#8220;It Works&#8221; zu lesen erhalten.</p>
<p>Das Zend-Framework basiert ja bekanntlich auf PHP und so benötigen wie jetzt entsprechend PHP. Um PHP5 zu installieren, bemüht man widerum die Console und holt die aktuelle Version aus den Quellen:</p>
<pre class="brush:shell">sudo apt-get install php5</pre>
<p>Nach erfolgreicher Installation sollte der Apache neu starten und wir können überprüfen, ob die Installation korrekt ausgeführt wurde. Dazu wechselt man in das Web-Verzeichnis des Servers:</p>
<pre class="brush:shell">cd /var/www</pre>
<p>Hier sollte bereits eine index.html existieren, die wir schon im Web-Browser bewundern durften. Mit dem Aufruf&#8230;</p>
<pre class="brush:shell">sudo gedit phpinfo.php</pre>
<p>&#8230; erstellt man die Datei phpinfo.php und öffnet diese gleichzeitig mit dem (in Ubuntu mitgelieferten) Editor, welcher übrigens um einges mächtiger ist, als z.B. Notepad unter Windows, da er für sehr viele Dateitypen Syntax-Highlighting unterstützt. In diese Datei fügt ihr nun folgende Zeile ein und speichert die Datei ab:</p>
<pre class="brush:php">&lt;?php phpinfo(); ?&gt;</pre>
<p>Damit haben wir eine Test-PHP-Datei erstellt, welche die Methode phpinfo aufruft und uns somit ausführliche Informationen über die installierte PHP-Version liefert. Diese Datei könnt ihr über den Web-Browser unter http://127.0.1.1/phpinfo.php aufrufen. Bei erfolgreicher PHP-Installation solltet ihr nun PHP-Informationen (z.B. die Version) sehen.</p>
<p>Einen großen Teil habt ihr damit schon geschafft und könntet schon fast  mit einem Zend-Projekt anfangen. Was noch fehlt ist die Datenbank und  das Apache ModRewrite Modul. Wofür die Datenbank (MySQL) gebraucht wird, sollte klar sein. Das Modul benötigen wir, um euer Projekt zu &#8220;privatisieren&#8221;. Das bedeutet, dass wir &#8211; gemäß ZF-Vorgabe &#8211; einzig und allein einen öffentlichen Zugriff auf die index.php anbieten.</p>
<p>Starten wir doch mit dem Einfacheren, dem Modul. Dieses ist nämlich schon installiert und muss nur noch aktiviert werden. Dazu wieder die Konsole:</p>
<pre class="brush:shell">sudo a2enmod rewrite</pre>
<p>Kurze Erklärung dazu: a2 (Apache2, unser Server) en (enable, aktivieren) mod (Modul) rewrite. Eventuell &#8211; falls nicht automatisch durchgeführt &#8211; müsst ihr den Apache neu starten.</p>
<p>Nun möchten wir uns noch um die letzte Komponente, einen MySQL-Server kümmern. Dazu bemühen wir wieder die geliebte Konsole und holen uns den mysql-server mit Hilfe von apt:</p>
<pre class="brush:shell">sudo apt-get install mysql-server</pre>
<p>Bei der Installation solltet ihr die entsprechenden Zugriffspasswörter wählen, der Rest passiert automatisch. Für diejenigen, die phpMyAdmin kennen und nutzen möchten, bietet sich an das Paket phpmyadmin zu installieren, welches dann unter http://127.0.1.1/phpmyadmin zu finden ist.</p>
<pre class="brush:shell">sudo apt-get install phpmyadmin</pre>
<p>Mit dieser Konfiguration könnt ihr euch nun in aller Ruhe in ein neues Zend-Projekt stürzen. Falls ihr möchtet, könnt ihr auch entsprechende Tipps und Tutorials dazu in meinem kleinen ScienceBlog zur Hilfe nehmen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ersocon.net/ubuntu-fur-das-zend-framework-konfigurieren-pid20.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MVC-Pattern im Web</title>
		<link>http://blog.ersocon.net/mvc-pattern-im-web-pid17.html</link>
		<comments>http://blog.ersocon.net/mvc-pattern-im-web-pid17.html#comments</comments>
		<pubDate>Wed, 03 Feb 2010 22:58:13 +0000</pubDate>
		<dc:creator>ersocon</dc:creator>
				<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[MVC Pattern]]></category>
		<category><![CDATA[View]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://blog.ersocon.net/?p=17</guid>
		<description><![CDATA[Das MVC-Pattern gibt es schon seit dem 20. Jahrhundert. Publiziert wurde es in den 90er Jahren zusammen mit dem Buch &#8220;Design Patterns&#8221; u.a. von Erich Gamma. Damals bezog sich das Pattern noch auf GUI-basierte Programme, z.B. ein Texteditor.
Mit der Verbreitung des Web wurde dieses Pattern auch auf die Webwelt portiert. Obwohl das Pattern schon so [...]]]></description>
			<content:encoded><![CDATA[<p>Das MVC-Pattern gibt es schon seit dem 20. Jahrhundert. Publiziert wurde es in den 90er Jahren zusammen mit dem Buch &#8220;Design Patterns&#8221; u.a. von Erich Gamma. Damals bezog sich das Pattern noch auf GUI-basierte Programme, z.B. ein Texteditor.</p>
<p>Mit der Verbreitung des Web wurde dieses Pattern auch auf die Webwelt portiert. Obwohl das Pattern schon so lange bekannt ist, trifft man in der Entwicklerwelt trotzdem oft auf Menschen, denen das Muster nichts sagt. Mit diesem Beitrag möchte ich das Pattern aufarbeiten, um es in späteren Beiträgen (z.B. für das Zend Framework) als Grundlage gebrauchen zu können.</p>
<p>Um das Pattern zu verstehen, ist es am besten vorher zu erfahren, was die Abkürzung bedeutet. Das M steht für das Model, V für den View und das C für den Controller. Die Langversion lautet also Model-View-Controller Pattern. Nachfolgend werde ich die einzelnen Ebenen und deren Zusammenspiel erläutern.</p>
<p><strong>Das Model</strong><br />
In allen drei Schichten muss man im Grunde etwas weiter ausholen, so auch beim Model. Das Model dient allgemein dazu die reale Welt &#8211; genauer gesagt Teile davon &#8211; in einer gewissen Form abzubilden. In der Softwareentwicklung wird dafür ein oder mehrere Diagramme des Problembereichs erstellt. Diese Diagramme dienen später als Plan, um die Objekte bzw. Datenstrukturen zu erstellen.</p>
<p>Diese Daten und ihre Strukturierung stellen das Model dar. Man könnte diese Ebene vereinfacht auch als Datenbehälter bezeichnen. Nehmen wir doch einfach ein konkretes Beispiel. Ich möchte mein Auto modellieren. Mich interessieren dabei die Marke, die PS Angabe und die Höchstgeschwindigkeit. Dazu erstelle ich eine Klasse &#8220;Auto&#8221; mit den Klassen-Attributen &#8220;marke&#8221;, &#8220;ps&#8221; und &#8220;maximalgeschwindigkeit&#8221;. Das Model ist nun fast fertig. Das einzige, was es noch benötigt sind sogenannte Getter- und Setter-Methoden. Diese brauchen wir, um einem Objekt der Klasse Auto Daten hinzufügen zu können und ebenfalls diese Daten wieder auszulesen.</p>
<p><strong>Der View</strong><br />
Der View ist mitunter am einfachsten zu erklären. Er stellt die Sicht auf das Model dar. D.h. die Daten des Models werden hier auf dem Bildschirm visualisiert. In der Web-Welt ist es die (ausgelieferte) Webseite, die der Benutzer am Ende zu sehen bekommt. Zusätzlich ist der View die Schnittstelle zwischen System und Benutzer. Der Benutzer interagiert also auf der View-Ebene, z.B. durch Formulare oder durch das Klicken eines Links.</p>
<p><strong>Der Controller</strong><br />
Der Controller ist als Steuerungseinheit zu verstehen. Der Idee nach wissen Model und View am Anfang nichts voneinander. Die Anfrage eines Clients (Web-Browser des Benutzers) an einen Server wird vom Controller entgegen genommen. Dieser Wertet die Anfrage aus. </p>
<p>Nehmen wir nochmals das Beispiel aus dem Model-Abschnitt. Der Benutzer möchte nun erfahren, welches Auto ich fahre und klickt entsprechend auf einen Link. Der Controller erkennt nun diese Anfrage und bereitet das Model auf. Dazu erstellt er ein Auto-Objekt und setzt die Daten auf &#8220;Suzuki&#8221;, &#8220;92&#8243; und &#8220;180km/h&#8221;. Das Model ist damit gefüllt. Jetzt entscheidet der Controller noch, dass die Seite für das Auto angezeigt werden soll, das ist der View. </p>
<p>Würde die Seite jetzt ausgeliefert werden, wäre leider nichts sichtbar, da der View ja nach wie vor nichts vom Model weiß. Auch dies erledigt der Controller. Verinfacht gesagt teilt er dem View mit &#8220;Benutzer bitte dieses Auto-Objekt zum Anzeigen&#8221;.</p>
<p>Dadurch, dass der View nun das Auto-Objekt kennt, kann er über die Getter-Methoden des Models auf die Daten zugreifen.</p>
<p>Einige Grundsätze fehlen bei dieser recht einfachen Beschreibung des MVC-Pattern:</p>
<ol>
<li>Der View manipuliert keine Daten des Models</li>
<li>Das Model ist das ahnungsloseste der drei Ebenen und darf nicht mit sicht auf den View oder den Controller entwickelt werden</li>
<li>Der Controller füllt in den meisten Fällen nicht die Daten des Models, sondern veranlasst das Laden aus der Datenbank (Stichwort Data-Access-Objects)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.ersocon.net/mvc-pattern-im-web-pid17.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
