Hej och välkomna till den första handledningen i ramverket Kohana!
Mitt namn är Sebastian och jag kommer skriva ett par av dessa och jag hoppas att de kommer till nytta.
Till att börja med så förutsätter jag ett par saker direkt, det är bara att punkta upp dom!
- Fungerande installerad webserver(t.ex. apache eller lighttpd) samt stöd för PHP5
- Kunskap i PHP
- Förståelse för främst objektorientering och gärna även MVC är att föredra.
Den sista punkten är väl lite flyktig då dessa båda går att snappa upp under tiden också.
Men då sätter vi igång då!
Det första vi ska göra och målet med dagens bloggpost är att göra en klassisk ‘Hello World’-sida med Kohana. Detta bara för att få upp och komma igång med en Kohana-installation.
Installation
Ladda ner senaste versionen av Kohana här.
I skrivande stund är det version 3.0.8 som gäller, men om du inte läser detta ett par år frammåt när det eventuellt är version 4 som gäller så borde allt den här gången funka ändå!
När du fått ner filen så packa upp den och spara mappen som innehåller index.php i din webservers webroot. Jag har av bekvämlighet döpt mappen till ‘hello_world’ och därför kommer alla anslutningar till denna Kohana-installation gå genom adressen http://localhost/hello_world/ förutsatt att din webserver också ligger på din lokala dator!
Gå sedan in på just http://localhost/hello_world/ så bör du bli automatiskt omdirigerad till en installations-fil som kollar att din webserver har alla viktiga moduler installerade för att kunna driva Kohana.
Du får då upp en fin sida som visar vad som är relevant för Kohana, vilka delar som fungerar och är igång och vad som eventuellt inte finns tillgängligt och det borde se ut såhär:

Det finns även en sektion som kallas ‘Optional Tests’ men huruvida dessa går igenom eller inte är ej relevant för denna handledningen så det struntar vi i just nu.
Om ni nu mot förmodan inte skulle gå igenom detta helt grönt så kan ni till exempel skriva en kommentar här tillsammans med eventuellt felmeddelande så kanske jag kan hjälpa till, eller så kan ni söka på internet själva och försöka lösa. Jag vågar nästan garantera att nån har råkat ut för samma problem någon gång, så ett bra ställe att kolla skulle kunna vara Kohanas officiella forum eller till och med skriva en fråga där själva.
När vi nu kan gå vidare härifrån så börjar vi med att ta bort filen install.php som ligger i sidans root, (webbserverns doc-root)/hello_world/install.php bör vara en relativ sökväg som gäller vad det än är för operativsystem och webserver som används. Jag har fått för mig att det kan vara bra att ha kvar install filen så jag brukar döpa om den bara, till exempel done_install.php bara för att klargöra att den är färdig.
Testa nu att ansluta till http://localhost/hello_world/ ännu en gång så får vi se om vi är igång!
Själv fick jag nu mitt första felmedellande! Men oroas inte, det fixar vi snart!

Utforska
Innan vi går vidare och styr upp detta fel vi fick så tänkte jag gå igenom några detaljer endast grundläggande.
Mappstrukturen kan vara bra att känna till och vad som är vad men vi börjar lätt:
- application <- Det är här du kommer jobba
- modules <- Om du importerar externa moduler och bibliotek hamnar de antagligen här
- system <- Här ligger själva Kohana kan man säga, detta bör du låta bli om du inte vill göra modifikationer av själva systemet och behovet finns sällan då det finns andra vägar. Men såklart är det inte onödigt att läsa koden om man tycker att det är intressant!
Denna gång kommer vi bara använda oss av mappen ‘application’ alltså, vi kommer gå djupare in på hur detta fungerar sedan.
konfigurering
Jaha. Nu är det dags att göra de få konfigureringarna som behövs för att få igång en fungerande Kohana-baserad hemsida, förutsatt att man nu valt att lägga den i en undermapp till webserverns dokument-root. Är den direkt i dokument-root kanske inte ens detta behövs, men för mig som har många lokala projekt igång samtidigt är detta nästan ett måste och det är inte så mycket mer jobb ändå.
Öppna upp filen bootstrap.php som ligger direkt i mappen application och leta efter denna kodsnutt:
/**
* Initialize Kohana, setting the default options.
*
* The following options are available:
*
* - string base_url path, and optionally domain, of your application NULL
* - string index_file name of your index file, usually "index.php" index.php
* - string charset internal character set used for input and output utf-8
* - string cache_dir set the internal cache directory APPPATH/cache
* - boolean errors enable or disable error handling TRUE
* - boolean profile enable or disable internal profiling TRUE
* - boolean caching enable or disable internal caching FALSE
*/
Kohana::init(array(
'base_url' => '/',
));
Ändra detta sedan till:
/**
* Initialize Kohana, setting the default options.
*
* The following options are available:
*
* - string base_url path, and optionally domain, of your application NULL
* - string index_file name of your index file, usually "index.php" index.php
* - string charset internal character set used for input and output utf-8
* - string cache_dir set the internal cache directory APPPATH/cache
* - boolean errors enable or disable error handling TRUE
* - boolean profile enable or disable internal profiling TRUE
* - boolean caching enable or disable internal caching FALSE
*/
Kohana::init(array(
'base_url' => '/hello_world/',
));
Alternativt vad du nu valt att döpa sidan till.
Detta innebär helt enkelt att man förklarar för Kohana att det är i en undermapp med namnet ‘hello_world’ som installationen ligger i.
Om du valt att lägga den direkt i dokument-rooten bör du slippa röra detta helt.
Testa sedan att ansluta ännu en gång till http://localhost/hello_world/ så ska du få se på grejer!
Eftersom att Kohana har en förskapad sida så kan vi redan nu se orden ‘hello, world!’ i webläsaren, förutsatt att du inte fått något tråkigt fel.
Slutför projektet
För att inte slippa göra en “egen” ‘hello world’ så ska vi nu ge oss in i att modifiera detta såklart.
Detta är som sagt (med förkunskapskraven i början av sidan alltså) inte en kurs i MVC så förutsätter jag att du redan har viss förståelse i detta.
Nu ska vi alltså ge oss in på att lätt modifiera en controller som man kan säga är logik-komponenten i en MVC-baserad applikation.
Öppna filen application/classes/controller/welcome.php som bör innehålla detta:
class Controller_Welcome extends Controller {
public function action_index() {
$this->request->response = 'hello, world!';
}
} // End Welcome
och ändra sedan detta till:
class Controller_Welcome extends Controller {
public function action_index() {
$this->request->response = 'hej, världen!';
}
} // End Welcome
Om du nu ansluter igen till http://localhost/hello_world så borde du nu såklart se texten ‘hej, världen!’.
Men var detta inte lite väl enkelt att avsluta med? Jo det tycker jag verkligen, så vi ger oss redan in på att använda en ‘View’ som då relativt till en Controller istället är en presentativ kompontent vars syfte är att visa datan (med hjälp av (X)HTML, kanske CSS & Javascript) istället för att sköta logiken bakom den.
Ändra nu samma fil som vi precis modifierade lätt, så den istället ser ut såhär:
class Controller_Welcome extends Controller_Template {
public $template = "layout";
public function action_index()
{
$this->template->content = 'hej, världen!';
}
} // End Welcome
Nu kommer detta inte fungera ännu, utan detta innebar bara att vi istället för att vara en simpel Controller, så ärver den här Controller-klassen från Controller_Template som är bättre anpassad för att mer automatiskt sköta vissa detaljer angående ‘Views’. Nu angav vi nämligen att den här Controller-klassen ska ha en specifik View i den publika variabeln $template som heter ‘layout’. I det här fallet så kommer den då kolla efter applications/views/layout.php, men den finns ännu inte så om du nu försöker ansluta kommer du att få ett felmeddelande.
Skapa filen vi precis skrev att Controllern kommer leta efter och den kan vi sedan fylla med HTML, och även skriva ut variabeln $content som vi i Controllern ger till denna View.
Det bör se ut såhär, ungefär:
<h1>
<?php echo $content; ?>
</h1>
Om du nu ansluter igen så bör du se samma text som tidigare, men mycket större såklart eftersom den ligger i en <h1>-tagg!
Med detta är vi nu färdiga med första genomgången i PHP5-ramverket Kohana. Jag hoppas att detta verkade någorlunda intressant och planen är att fortsätta på samma kodbas i kommande genomgångar. (Fast jag kanske kan tillhandahålla den färdiga koden från tidigare för att vara snäll
)
Nu är det dags att sova för mig, så på återseende!
/Sebastian