<?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; routing</title>
	<atom:link href="http://nasza.kohanaphp.pl/tag/routing/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>Instalacja i konfiguracja</title>
		<link>http://nasza.kohanaphp.pl/instalacja-i-konfiguracja/</link>
		<comments>http://nasza.kohanaphp.pl/instalacja-i-konfiguracja/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 20:02:06 +0000</pubDate>
		<dc:creator>mck</dc:creator>
				<category><![CDATA[Kurs]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[routing]]></category>

		<guid isPermaLink="false">http://nasza.kohanaphp.pl/?p=94</guid>
		<description><![CDATA[Czas na 3 krok naszego kursu. Zajmiemy się instalacją i podstawową konfiguracją Kohany. Nie są to zbyt skomplikowane czynności, ale warto wiedzieć o kilku szczegółach by uniknąć błędów.

Gdzie rośnie Kohana?
Po najnowszą paczkę Kohany udajemy się na oficjalną stronę do działu Download, gdzie możemy wybrać interesujące nas składniki.
Do dyspozycji mamy 5 modułów:


		Archive &#8211; do zarządzania archiwami [...]]]></description>
			<content:encoded><![CDATA[<p>Czas na 3 krok naszego kursu. Zajmiemy się instalacją i podstawową konfiguracją Kohany. Nie są to zbyt skomplikowane czynności, ale warto wiedzieć o kilku szczegółach by uniknąć błędów.</p>
<p><span id="more-94"></span></p>
<h2>Gdzie rośnie Kohana?</h2>
<p>Po najnowszą paczkę Kohany udajemy się na oficjalną stronę do działu <a href="http://www.kohanaphp.pl/download">Download</a>, gdzie możemy wybrać interesujące nas składniki.</p>
<p>Do dyspozycji mamy 5 modułów:</p>
<ul>
<li>
		<strong>Archive</strong> &#8211; do zarządzania archiwami zip, tar, gzip i bzip
	</li>
<li>
		<strong>Auth</strong> &#8211; do uwierzytaelniania i zarządzania użytkownikami (używa biblioteki ORM)
	</li>
<li>
		<strong>Gmaps</strong> &#8211; do szybkich i bezbolesnych zabaw z Google Maps
	</li>
<li>
		<strong>Kodoc</strong> &#8211; do generowania dokumentacji
	</li>
<li>
		<strong>Payment</strong> &#8211; do obsługi płatności (z istotniejszych jest tu PayPal, natomiast brak jakiegokolwiek wsparcia polskich systemów płatności)
	</li>
</ul>
<p>Mamy też narzędzia <a href="http://michelf.com/projects/php-markdown/"><strong>Markdown</strong></a> (do obsługi i konwersji znaczników zgodnie z przyjętymi <a href="http://daringfireball.net/projects/markdown/syntax">zasadami</a>) i <a href="http://www.swiftmailer.org/"><strong>SwiftMailer</strong></a> (do zaawansowanej obsługi maili), a także spory wybór języków.</p>
<p>W naszych przykładach będziemy korzystać z modułu Auth, narzędzia SwiftMailer i języka polskiego.</p>
<h2>Instalacja</h2>
<p>W przypadku Kohany jest to czynność dziecinnie prosta. Wystarczy rozpakować pobraną paczkę do wybranego katalogu (dla nas będzie to katalog o finezyjnej nazwie &#8220;kohana&#8221;). Oto jak powinna wyglądać jego zawartość:</p>
<div class="illustration">
	<img class="alignnone size-full wp-image-170" title="Rys. 3.1. Zawartość głównego folderu" src="http://nasza.kohanaphp.pl/wp-content/uploads/2009/01/kohana_main_folder1.png" alt="Rys. 3.1. Zawartość głównego folderu" width="200" height="160" />
</div>
<p>Po uprzednim zapoznaniu się z licencją możemy się jej pozbyć, tak samo jak loga Kohany, gdyż w praktyce się nam nie przydadzą.</p>
<p>Plik <code>"install.php"</code> jest absolutną nowością (przed wersją 2.3 nie było takich frykasów). Wprawdzie jest to najzwyklejszy test sprawdzający czy posiadamy wszystkie niezbędne do uruchomienia Kohany składniki, ale cieszy. Oczywiście po pomyślnym zakończeniu testu zostaniemy poproszeni o jego usunięcie lub zmianę nazwy (kolejne testy możemy sobie darować, więc może podzielić los licencji i loga).</p>
<h2>.htaccess, czyli przyjazne linki i nie tylko</h2>
<p>W katalogu z Kohaną znajdziemy plik <a href="http://dev.kohanaphp.com/browser/trunk/example.htaccess"><code>"example.htaccess"</code></a>, który w zasadzie jest gotowy do użycia (oczywiście po zmianie nazwy na <code>".htaccess"</code> i usunięciu z niego wiersza z &#8220;<code>RewriteBase /kohana/</code>&#8221; lub jego zmianie na &#8220;<code>RewriteBase /</code>&#8220;).</p>
<h2>Podstawowa konfiguracja</h2>
<p>Wszystkie pliki odpowiedzialne za konfiguracje znajdują się w katalogu <code>"application/config/"</code>, który na początku, choć wygląda skromnie, ma wszystko czego nam potrzeba, czyli główny plik konfiguracyjny <a href="http://dev.kohanaphp.com/browser/trunk/application/config/config.php"><code>"config.php"</code></a>.</p>
<p>Z najciekawszych rzeczy jakie można w nim skonfigurować warto wymienić:</p>
<ul>
<li>
		<strong><code>site_domain</code></strong> &#8211; główna ścieżka do strony
	</li>
<li>
		<strong><code>index_page</code></strong> &#8211; nazwa pliku odpowiedzialnego za działanie aplikacji. Domyślnie jest to <code>"index.php"</code>, ale jeśli chcemy mieć ładne linki, to zmieniamy jego wartość na pustą
	</li>
<li>
		<strong><code>url_suffix</code></strong> &#8211; rozszerzenie plików dodawane do generowanych adresów. Domyślnie puste, ale możemy mu nadać dowolną wartość, np.: <code>".html"</code>
	</li>
<li>
		<strong><code>internal_cache</code></strong> &#8211; okres czasu (w sekundach) przez jaki ma być cache&#8217;owana konfiguracja Kohany
	</li>
<li>
		<strong><code>enable_hooks</code></strong> &#8211; zarządzanie hakami (nimi zajmiemy się w niedalekiej przyszłości). Możemy je wyłączyć (wartość <code>"FALSE"</code>), włączyć wszystkie (<code>"TRUE"</code>) lub włączyć wybrane (tablica z nazwami haków)
	</li>
<li>
		<strong><code>modules</code></strong> &#8211; zarządzanie modułami. Wystarczy odkomentować wybrane moduły lub dodać swoje własne (oczywiście wszystkie muszą się znajdować w katalogu <code>"modules/"</code>)
	</li>
</ul>
<h2>Co jeszcze można skonfigurować?</h2>
<p>Wszystko, serio <img src='http://nasza.kohanaphp.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>W katalogu <code>"system/config/"</code> znajdują się wszystkie dostępne pliki konfiguracyjne używane przez Kohanę. <a href="http://nasza.kohanaphp.pl/struktura-kohany/">Z poprzedniego artykułu</a> wiecie, że najważniejsze są pliki z katalogu <code>"application/"</code>, następnie z modułów, a na końcu z katalogu <code>"system/"</code>, więc zamiast grzebać w domyślnych plikach konfiguracyjnych kopiujemy wybrane do katalogu <code>"application/config/"</code> i tam je można edytować. <span style="text-decoration: underline;"><strong>Zmiany w katalogu <code>"system/*"</code> są niewskazane.</strong></span></p>
<p>Oczywiście Kohana nie ogranicza nas tylko do używania jej plików konfiguracyjnych, ale pozwala nam na tworzenie własnych (więcej szczegółów trochę niżej).</p>
<h2>Routing, czyli skąd i dokąd</h2>
<p>Kohana zapewnia nam następujące mapowanie linków:</p>
<p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;">naszastrona<span style="color: #339933;">.</span>pl<span style="color: #339933;">/</span>klasa<span style="color: #339933;">/</span>funkcja<span style="color: #339933;">/</span>parametr1<span style="color: #339933;">/</span>parametr2<span style="color: #339933;">/.../</span>parametr<span style="color: #339933;">-</span>n</pre></td></tr></table></div>

<p>gdzie klasa to nazwa kontrolera, funkcja to nazwa wybranej funkcji, a kolejne segmenty to przekazywane parametry. Dzięki routingowi możemy otrzymać niemal dowolne linki.</p>
<p>Za konfigurację routingu odpowiada plik <a href="http://dev.kohanaphp.com/browser/trunk/system/config/routes.php"><code>"routes.php"</code></a>, który początkowo zawiera jeden wpis:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'_default'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'welcome'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>czyli jako domyślny ustawiony jest kontroler &#8220;welcome&#8221;.</p>
<p>Oczywiście możemy definiować własne trasy:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// dla adresu 'naszastrona.pl/o_firmie' uruchamiamy domyślną metodę 'index' z kontrolera 'info'</span>
<span style="color: #0000ff;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'o_firmie'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'info'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// dla adresu 'naszastrona.pl/kontakt' uruchamiamy metodę 'kontakt' z kontrolera 'info'</span>
<span style="color: #0000ff;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'kontakt'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'info/kontakt'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// dla adresu 'naszastrona.pl/produkt/13' uruchamiamy z parametrem '13' metodę 'pokaz' z kontrolera 'produkty'</span>
<span style="color: #0000ff;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'produkt/([0-9]+)'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'produkty/pokaz/$1'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h2>Najważniejsze pliki konfiguracyjne</h2>
<p><strong><a href="http://dev.kohanaphp.com/browser/trunk/system/config/routes.php"><code>database.php</code></a></strong> &#8211; ustawienia połączenia z bazą danych. Najważniejsze z nich:</p>
<ul>
<li>
		<strong><code>connection['user']</code></strong> &#8211; nazwa użytkownika bazy
	</li>
<li>
		<strong><code>connection['pass']</code></strong> &#8211; hasło użytkownika bazy
	</li>
<li>
		<strong><code>connection['host']</code></strong> &#8211; host
	</li>
<li>
		<strong><code>connection['database']</code></strong> &#8211; nazwa bazy
	</li>
<li>
		<strong><code>connection['character_set']</code></strong> &#8211; system kodowania znaków
	</li>
</ul>
<p><strong><a href="http://dev.kohanaphp.com/browser/trunk/system/config/cookie.php"><code>cookie.php</code></a></strong> &#8211; ustawienia ciastek. Najważniejsze z nich:</p>
<ul>
<li>
		<strong><code>domain</code></strong> &#8211; domena, dla której dostępne są ciastka. Domyślnie puste &#8211; każda strona może odczytać zawartość tych ciastek
	</li>
<li>
		<strong><code>expire</code></strong> &#8211; długość życia ciastka (w sekundach). Domyślnie 0 &#8211; do zamknięcia przeglądarki
	</li>
</ul>
<p><strong><a href="http://dev.kohanaphp.com/browser/trunk/system/config/locale.php"><code>locale.php</code></a></strong> &#8211; ustawienia lokalizacji:</p>
<ul>
<li>
		<strong><code>language</code></strong> &#8211; język strony. Pierwszym elementem tablicy musi być nazwa katalogu (i równocześnie symbolem języka w i18n) z plikami językowymi. Dla naszych przykładów będzie to: <strong><code>pl_PL</code></strong>. Kolejne elementy są alternatywą dla systemów nie obsługujących i18n. Więcej na: <a href="http://php.net/setlocale">php.net/setlocale</a>
	</li>
<li>
		<strong><code>timezone</code></strong> &#8211; strefa czasowa. Domyślnie pusta &#8211; używamy strefy czasowej serwera. Więcej na: <a href="http://php.net/timezones">php.net/timezones</a>
	</li>
</ul>
<p><strong><a href="http://dev.kohanaphp.com/browser/trunk/system/config/pagination.php"><code>pagination.php</code></a></strong> &#8211; ustawienia stronicowania. Najważniejsze z nich:</p>
<ul>
<li>
		<strong><code>uri_segment</code></strong> &#8211; numer lub nazwa segmentu z numerem aktualnej strony
	</li>
<li>
		<strong><code>items_per_page</code></strong> &#8211; liczba elementów wyświetlanych na jednej stronie
	</li>
</ul>
<p><strong><a href="http://dev.kohanaphp.com/browser/trunk/system/config/session.php"><code>session.php</code></a></strong> &#8211; ustawienia sesji. Najważniejsze z nich:</p>
<ul>
<li>
		<strong><code>driver</code></strong> &#8211; sterownik sesji. Do wyboru: &#8220;cookie&#8221;, &#8220;database&#8221;, &#8220;native&#8221; lub &#8220;cache&#8221;
	</li>
<li>
		<strong><code>name</code></strong> &#8211; nazwa sesji
	</li>
<li>
		<strong><code>validate</code></strong> &#8211; tablica parametrów do walidacji. Do wyboru: &#8220;user_agent&#8221;, &#8220;ip_address&#8221; i &#8220;expiration&#8221;
	</li>
<li>
		<strong><code>expiration</code></strong> &#8211; długość życia sesji (w sekundach)
	</li>
</ul>
<h2>Własne pliki konfiguracyjne</h2>
<p>Jak już wcześniej wspomniałem Kohana daje nam możliwość używania własnych plików konfiguracyjnych. Dla przykładu stwórzmy w katalogu <code>"application/config/"</code> plik <code>"konfiguracja.php"</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'parametr1'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'wartosc1'</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'parametr2'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'wartosc2'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Możemy wczytać do tablicy cały plik:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$konfiguracja</span> <span style="color: #339933;">=</span> Kohana<span style="color: #339933;">::</span><span style="color: #004000;">config_load</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'konfiguracja'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>lub odczytać wybrany parametr:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php-brief" style="font-family:monospace;"><span style="color: #0000ff;">$parametr</span> <span style="color: #339933;">=</span> Kohana<span style="color: #339933;">::</span><span style="color: #004000;">config</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'konfiguracja.parametr2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://nasza.kohanaphp.pl/instalacja-i-konfiguracja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
