<?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>Nasza Kohana &#187; mvc</title>
	<atom:link href="http://nasza.kohanaphp.pl/tag/mvc/feed/" rel="self" type="application/rss+xml" />
	<link>http://nasza.kohanaphp.pl</link>
	<description></description>
	<lastBuildDate>Sat, 02 Jan 2010 16:27:50 +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>Wprowadzenie</title>
		<link>http://nasza.kohanaphp.pl/wprowadzenie/</link>
		<comments>http://nasza.kohanaphp.pl/wprowadzenie/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 19:47:05 +0000</pubDate>
		<dc:creator>Zepco</dc:creator>
				<category><![CDATA[Kurs]]></category>
		<category><![CDATA[mvc]]></category>

		<guid isPermaLink="false">http://nasza.kohanaphp.pl/2008/12/25/14/</guid>
		<description><![CDATA[Kohana jest jednym z wielu frameworków stworzonych w języku PHP.
Jej korzenie sięgają innego frameworka o nazwie Code Igniter (CI). Ponieważ deweloperzy CI zapowiedzieli, że ich produkt nie będzie wspierał PHP w wersji 5, grupa programistów korzystających dotychczas z CI postanowiła utworzyć nowy projekt,  idący z duchem czasu i wspierający coraz bardziej rozwijającą się obiektowość [...]]]></description>
			<content:encoded><![CDATA[<p><em>Kohana</em> jest jednym z wielu <a title="Framework" href="http://pl.wikipedia.org/wiki/Framework" target="_blank">frameworków</a> stworzonych w języku PHP.</p>
<p>Jej korzenie sięgają innego frameworka o nazwie <a title="Code Igniter" href="http://pl.wikipedia.org/wiki/CodeIgniter" target="_blank">Code Igniter</a> (CI). Ponieważ deweloperzy CI zapowiedzieli, że ich produkt nie będzie wspierał PHP w wersji 5, grupa programistów korzystających dotychczas z CI postanowiła utworzyć nowy projekt,  idący z duchem czasu i wspierający coraz bardziej rozwijającą się obiektowość dla PHP. Tak powstała <em>Kohana</em>, początkowo bardzo podobna do CI, lecz w tej chwili utożsamia się tylko z jego ogólnymi ideami działania, ponieważ sam projekt jest w pełni samodzielny i jego rozwój biegnie własnym torem.
</p>
<p><span id="more-14"></span></p>
<h3>Co cechuje Kohanę?</h3>
<ul>
<li>
		Oparta o wzorzec MVC (o tym za chwilę);
	</li>
<li>
		Napisana w PHP 5, także jeśli jesteś osobą znającą ten język, to być może Kohana przypadnie ci do gustu;
	</li>
<li>
		W porównaniu z niektórymi kolosami typu Symfony, Mojavi itp. jest dość szybka;
	</li>
<li>
		Poza samym wzorcem MVC i ogólnymi zasadami konstrukcji <em>Kohana</em> daje dość ogromną swobodę w tworzeniu aplikacji.
	</li>
</ul>
<h3>Czym jest MVC?</h3>
<p>Jak możemy wyczytać w <a title="MVC Wikipedia" href="http://pl.wikipedia.org/wiki/MVC" target="_blank">Wikipedii</a>, MVC jest wzorcem projektowym dzielącym aplikację na 3 części:</p>
<ul>
<li>
		Model – jego zadaniem są operacje na danych. Najczęściej modele korzystają z baz danych, ale równie dobrze mogą odwoływać się 	do dokumentów będących na dysku czy też innych stron;
	</li>
<li>
		Widok – w wielu serwisach rolę widoku określa się jako oddzielenie kodu PHP od HTML, co jest oczywiście nieprawdą. Jednym słowem 	widok tworzy to, co użytkownik otrzymuje na wyjściu, w zależności od założeń działania aplikacji. Może to być reprezentacja danych pobranych z modelu &#8211; w formie tabeli &#8211; połączonych z interfejsem 	zapisanym jako kod HTML, czy też inny rodzaj pliku (PDF, XML);
	</li>
<li>
		Kontroler –  jest łącznikiem między modelem i widokiem. Jego 	zadaniem jest odbieranie żądań użytkownika, wysyłanie zapytania do modelu o konkretne dane, a po ich otrzymaniu odesłanie ich do 	widoku. Jednym słowem kontroluje on przebieg aplikacji.
	</li>
</ul>
<h3>Co nam daje taki podział?</h3>
<p>Przede wszystkim model stanowi pewnego rodzaju czarną skrzynkę, o której wiemy tylko to, co z nią zrobić, żeby zwróciła interesujące nas dane. A to, w jaki sposób to zrobi i z jakiego źródła danych skorzysta (plik, baza MySQL, PostgreSQL, XML itp.) nie będzie już nas interesować. Jego zadaniem będą tylko operacje na danych (odczytywanie, zapisywanie itp.) i nic poza tym.</p>
<p>Dajmy na to, że mamy dostawcę, którego prosimy o dostarczenie danego produktu (np. soku). Nie interesuje nas, czy weźmie go z hurtowni A czy z hurtowni B. Ważne, że otrzymamy to o co prosimy. Może być taka sytuacja, że dotychczas dostawca brał towar z hurtowni A, która z nieznanych przyczyn ogłosiła upadłość. Żeby wywiązać się z umowy, dostawca szuka innego źródła i znajduje hurtownię B, skąd dostarczy nam towar. My jako kupujący nie dostrzegamy różnicy, bo wszystko, o co poprosiliśmy zostało dostarczone, a kwestia &#8220;skąd&#8221; to już zmartwienie dostawcy.</p>
<p>Podobnie jest z modelem. Załóżmy, że do tej pory model pobierał dane z bazy MySQL, ale cały serwis musi być przeniesiony na PostgreSQL. Z zewnątrz nic się nie zmienia, nadal jest ten sam model i te same metody odwołujące się do niego, zmianie ulega tylko wnętrze modelu. Dzięki temu oszczędzamy wiele czasu i nerwów, bo nie musimy zmieniać wpisów odwołujących się, być może w kilkudziesięciu (czy nawet więcej) plikach do naszego modelu.</p>
<p>Podobnie sprawa może mieć się w przypadku widoku. Wyobraźmy sobie sytuację, że wszystkie dane pobrane z modelu były wyświetlane w formacie HTML, ale stworzyliśmy sobie program, który odwołuje się do naszej strony. Operuje on zaś na plikach XML. Co robimy? Przepisujemy naszą stronę na nowo? Nic podobnego &#8211; zmieniamy tylko widok tak, aby wyświetlał to co chcemy, czyli w tym przypadku XML. Pozostała część aplikacji (kontroler i modele) nie ulega zmianie.</p>
<p>Choć nic nie stoi na przeszkodzie, żeby tak dostosować kontroler, aby w zależności od tego czy żądanie wywodzi się od przeglądarki internetowej czy też z naszego programu, wybierał odpowiedni widok i wyświetlał go.</p>
<p>Jak widać rozwiązanie takie pozwala na zaoszczędzenie mnóstwa czasu. Ponadto możemy podzielić prace nad projektem na kilka osób, gdzie jedna np. może tworzyć model, inna widok, a jeszcze inna scalać oba te elementy tworząc kontroler.</p>
<p>To tyle tytułem wstępu. Kolejne części opisują budowę i zasadę tworzenia aplikacji z wykorzystaniem Kohany. A to wszystko na przykładzie tworzenia prostego blogu internetowego.</p>
]]></content:encoded>
			<wfw:commentRss>http://nasza.kohanaphp.pl/wprowadzenie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
