Kohana er et PHP 5 rammeverk som bruker modellvisningskontrolleren (MVC) arkitektonisk mønster. Det er flere grunner til hvorfor du bør velge Kohana, men de viktigste er sikkerhet, vektløshet og enkelhet. I denne opplæringen presenterer jeg hovedtrekkene, og med en enkel demonstrasjon vil jeg vise deg hvor mye tid Kohana potensielt kan spare deg for.
Kohana er et PHP5-rammeverk som bruker arkitektonisk mønster av Model View Controller. MVC holder applikasjonslogikken
skille fra presentasjonen. Dette gjør at vi kan lage renere kode og spare tid for bugsøking.
Ukjent med dette mønsteret:
Kohana var opprinnelig en gaffel av CodeIgniter (CI), som er et åpen kildeprodukt fra EllisLab. Det er mange likheter mellom CI og Kohana, men all koden er enten ny eller fullstendig omskrevet. Som du kan lese på den offisielle Kohana nettsiden, er hovedtrekkene:
La oss komme i gang. Besøk Kohana offisielle nettside http://kohanaphp.com og klikk på den grønne boksen i høyre hjørne for å laste ned den nyeste versjonen. Alle Kohana-biblioteker, hjelpere og visninger er inkludert i standard nedlastingspakke, men du kan velge ekstra moduler, leverandørverktøy og språk hvis du vil. I denne veiledningen kan standardpakken være nok. Klikk på "Last ned Kohana!" for å begynne nedlastingen.
Når du er ferdig med å laste ned den:
$ config ['site_domain'] = 'lokalhost / kohana';
Kohana vil kjøre i nesten alle miljøer med minimal konfigurasjon. Det er noen få minimumsserverkrav:
Det er også noen påkrevde utvidelser.
Hvis installasjonen din er fullført, vil du bli omdirigert til denne testsiden:
Hvis noen av testene feiler, må du rette dem før du går videre.
Hvis alle tester har gått, går du til Kohana-katalogen og fjerner eller gir nytt navn til install.php-skriptet. Oppdater, og du vil se en velkommen side som dette:
Kohana er klar til å gå. Ingen annen konfigurasjon er nødvendig. Dette rammeverket er fantastisk. Er det ikke? La oss se på noen kode. Følg meg.
Kanoniske programmeringsveiledninger starter med "Hello world" -eksempelet. Jeg tror i stedet at en enkel applikasjon kan gi deg en klar ide om hvordan rammen fungerer. Så, vi skal bygge en CD-samlingsleder - bare for en morsom demonstrasjon. Før vi starter kodingen, kreves det en kort introduksjon til Kohana filsystem.
Vår søknad vil bli plassert i applikasjon mappe. I denne mappen er det flere undermapper, men vi trenger følgende for vårt prosjekt:
De resterende undermappene kreves ikke for denne opplæringen, så jeg inviterer deg til å lære mer på Kohana nettsted.
De system mappe vert Kohana kjerne og Kohana verktøy som biblioteker, hjelpere og forhåndsdefinerte konfigurasjonsfiler. I dette prosjektet vil vi bruke noen biblioteker og noen hjelpere - gode verktøy for å få fart på arbeidet ditt.
De eiendeler mappen er ikke en forhåndsdefinert Kohana-mappe. Jeg har laget den for mediefiler som CSS, JS og bilder. Jeg skal vise deg hvordan du skal inkludere disse filene i prosjektet.
De moduler mappe er stedet å sette gjenbrukbare samlinger av relaterte filer som sammen legger til en bestemt funksjonalitet til et program. Autentiseringsmodulen, levert av Kohana-teamet, er et eksempel på modulen.
Dette er en veldig kort introduksjon til Kohana-filsystemet, men det er nok for denne opplæringen. Jeg vil ikke bore deg mer med teori.
Jeg har valgt MySQL som DBMS, men husk at Kohana støtter også MsSQL, MySQLi, PostgreSQL, PDOSqlite. Opprett en database som heter "cd_collection" eller velg navnet du foretrekker, og kjør følgende SQL gjennom phpMyAdmin eller noe verktøy for å håndtere administrasjonen av MySQL.
CREATE TABLE 'album' ('id' int (11) IKKE NULL auto_increment, 'navn' varchar (50) samler utf8_bin IKKE NULL, 'forfatter' varchar (50) samler utf8_bin IKKE NULL, 'genre_id' int (11) IKKE NULL , PRIMARY KEY ('id'), NØKKEL 'genre_id' ('genre_id')) MOTOR = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 19; INSERT TIL 'Album' ('ID', 'Navn', 'Forfatter', 'Genre_id') VÆRDIER (2, 'Linjer, Viner Og Prøvetider', 'Jonas Brothers', 16), (3, 'ENDEN' , 'The Black Eyed Peas', 16), (4, 'Relapse', 'Eminem', 18), (5, 'Monuments And Melodies', 'Incubus', 1), (6, 'Thriller', 'Michael Jackson ', 16), (7,' Back in Black ',' AC / DC ', 4), (8,' Den mørke siden av månen ',' Pink Floyd ', 4) av "Hell's", "Meat Loaf", 4), (10, 'Backstreet Boys', 'Millennium', 16), (11, 'Rykter', 'Fleetwood Mac', 4) , 'Shania Twain', 16), (13, Led Zeppelin IV, Led Zeppelin, 4), (14, 'Jagged Little Pill', 'Alanis Morissette', 4), (15, Sgt. Pepper 's Lonely Hearts Club Band', 'The Beatles', 16), (16, 'Falling In You', 'C © Line Dion', 16), (17, 'Music Box', 'Mariah Carey', 16 ), (18, 'Født i USA', 'Bruce Springsteen', 4); CREATE TABLE 'genres' ('id' int (11) IKKE NULL auto_increment, 'navn' varchar (50) samler utf8_bin IKKE NULL, PRIMARY KEY ('id'), UNIQUE KEY 'navn' ('navn')) MOTOR = I nnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 22; INSERT INTO 'genrer' ('id', 'navn') verdier (1, 'Alternative Rock'), (2, 'Blues'), (3, 'Klassisk'), (4, 'Rock'), , 'Country'), (6, 'Dance'), (7, 'Folk'), (8, 'Metal'), (9, 'Hawaiian'), (10, 'Import'), Indie Music '), (12,' Jazz '), (13,' Latin '), (14,' New Age '), (15,' Opera '), (16,' Pop '), Soul '), (18,' Rap '), (20,' Soundtracks '), (21,' World Music '); ALTER TABLE 'album' ADD CONSTRAINT 'genre_inter_relational_constraint' Utenlandske nøkkelen ('genre_id') REFERENCES 'genres' ('id') OM DELETE CASCADE ON UPDATE CASCADE;
Som du kan se, lager SQL to tabeller, album og sjangre, og fyller dem med noen data. Den siste SQL-setningen legger til en begrensning for den utenlandske nøkkelen "genre_id".
Databasestrukturen er veldig enkel og trenger ikke mye forklaring.
Nå må du fortelle Kohana hvor databasen din er plassert og hvordan du får tilgang til den. Rediger den globale konfigureringsfilen Systemet / konfig / database.php som følger
$ config ['default'] = array ('benchmark' => SANT, 'vedvarende' => FALSE, 'forbindelse' => array ('type' => 'mysql', 'user' => 'root' pass '=>' root ',' host '=>' localhost ',' port '=> FALSE,' socket '=> FALSE,' database '=>' cd_collection '),' character_set '=>' utf8 ' 'table_prefix' => ", 'object' => TRUE, 'cache' => FALSE, 'escape' => TRUE);
Denne koden forteller Kohana å koble til en MySQL-database kalt "cd_collection" på localhost med brukernavnet "root" og passordet "root". Du må endre disse innstillingene i henhold til konfigurasjonen av databaseserveren.
La oss nå lage vår første kontroller. Husk disse konvensjonene.
Husk også hvordan Kohana strukturerer nettadressene og hvordan du kan ringe en kontrolleringsmetode; for eksempel http: //hostname/kohana_directory/index.php/controller/function.
La oss ta en titt på denne enkle kontrolleren.
PHP5 OOP er en forutsetning. Så hvis du ikke er velbevandret, kan du lære mer her.
Konstruktørfunksjonen, kalt __construct, initialiserer klassen og ringer oppforfatteren.
Indeksfunksjonen er standardfunksjonen, så det vil bli kalt hvis vi kaller regulatoren uten
angir hvilken som helst funksjon (for eksempel http: //localhost/index.php/kohana/album. Etter navnet kontrolleren
det er ingen funksjon, standardindeksfunksjonen vil bli kalt.)Gitt disse grunnleggende reglene, la oss fokusere på vår søknad. Albumkontrolleren implementerer alle handlingene for
albumets samlingsadministrasjon. Denne kontrolleren lar oss lage et nytt album for å vise albumene som er lagret i vår database,
å oppdatere et album, og å slette et album.Så la oss endre klassen som følger.
Opprett en fil som heter album.php i application / kontrollere / og lim inn følgende.
album_model = nytt Album_Model; $ this-> genre_model = ny Genre_Model; $ this-> list_view = ny visning ('liste'); $ this-> update_view = ny visning ('oppdatering'); $ this-> create_view = new View ('create'); offentlige funksjonsindeks () $ this-> show_albums_list (); privat funksjon show_albums_list () $ albums_list = $ this-> album_model-> get_list (); $ Dette-> list_view-> set ( 'albums_list', $ albums_list); $ Dette-> list_view-> render (TRUE); offentlig funksjon show_create_editor () $ this-> create_view-> sett ('genres_list', $ this-> get_genres_list ()); $ Dette-> create_view-> render (TRUE); offentlig funksjon show_update_editor ($ id) $ album_data = $ this-> album_model-> les ($ id); $ Dette-> update_view-> set ( 'album_id', $ album_data [0] -> id); $ Dette-> update_view-> set ( 'navn', $ album_data [0] -> navn); $ Dette-> update_view-> set ( 'forfatter', $ album_data [0] -> forfatter); $ Dette-> update_view-> set ( 'genre_id', $ album_data [0] -> genre_id); $ Dette-> update_view-> set ( 'genres_list', $ dette-> get_genres_list ()); $ Dette-> update_view-> render (TRUE); offentlig funksjon lage () $ album_data = array ('name' => $ this-> input-> post ('navn'), 'author' => $ this-> input-> post ('author') 'genre_id' => $ this-> input-> post ('genre_id')); $ Dette-> album_model-> opprette (album_data $); url :: omdirigere ( 'album'); offentlig funksjon oppdatering () $ album_data = array ('name' => $ this-> input-> post ('navn'), 'author' => $ this-> input-> post ('author') 'genre_id' => $ this-> input-> post ('genre_id')); $ Dette-> album_model-> oppdateringen ($ dette-> input-> innlegget ( 'album_id'), $ album_data); url :: omdirigere ( 'album'); offentlig funksjon slette ($ id) $ this-> album_model-> delete ($ id); url :: omdirigere ( 'album'); privat funksjon get_genres_list () $ db_genres_list = $ this-> genre_model-> get_list (); $ genres_list = array (); hvis (sizeof ($ db_genres_list)> = 1) foreach ($ db_genres_list som $ item) $ genres_list [$ item-> id] = $ item-> navn; returnere $ genres_list;La meg forklare hva denne koden gjør.
Fem medlemmer variabler er erklært øverst i klassen:
privat $ album_model; privat $ genre_model; privat $ list_view; privat $ create_view; privat $ update_view;Disse medlemmene er private fordi jeg bare vil begrense synligheten til denne klassen.
I konstruksjonsmetoden opprettes modell- og visningsobjektene ved hjelp av de fem medlemmene:
$ this-> album_model = new Album_Model; $ this-> genre_model = ny Genre_Model; $ this-> list_view = ny visning ('liste'); $ this-> update_view = ny visning ('oppdatering'); $ this-> create_view = new View ('create');For å lage et modellobjekt bruker du denne syntaksen:
$ obj_name = nytt Name_Model;For å opprette et visningsobjekt, bruk denne syntaksen:
$ obj_name = ny visning ('view_filename_without_extension');Nå er det to objekter å få tilgang til albumet og sjangermodellen, og tre objekter for å få tilgang til visningen som trengs for å gjøre presentasjonen.
Indeksmetoden kaller show_albums_list-metoden som viser alle albumene som er lagret i databasen.
$ albums_list = $ this-> album_model-> get_list (); $ Dette-> list_view-> set ( 'albums_list', $ albums_list); $ Dette-> list_view-> render (TRUE);I denne metoden kan du se hvordan modellen og visningsobjektet brukes til å få tilgang til relative metoder. "get_list" er en modell metode (vi vil se det senere) som returnerer alle albumene lagret i databasen. Resultatet lagres i "$ album_list" -arrangementet. For å passere resultatmatrisen fra kontrolleren til visningen, kalles "sett" -metoden på visningsobjektet. Denne metoden krever to parametere: en ny tom variabel (album_list) for å inneholde data fra en eksisterende variabel ($ album_list). Nå inneholder den nye variabelen "album_list" $ album_list-arrayet (vi vil se senere hvordan du viser innholdet i visningen). Metoden "gjengivelse", med TRUE parameteren, er nødvendig for å utdata data til nettleseren.
Show_create_editor-metoden viser brukergrensesnittet for å sette inn et nytt album.
$ Dette-> create_view-> set ( 'genres_list', $ dette-> get_genres_list ()); $ Dette-> create_view-> render (TRUE);Listen over sjangrene er sendt til visningen.
Show_update_editor-metoden viser brukergrensesnittet for å oppdatere et eksisterende album.
$ album_data = $ this-> album_model-> les ($ id); $ Dette-> update_view-> set ( 'album_id', $ album_data [0] -> id); $ Dette-> update_view-> set ( 'navn', $ album_data [0] -> navn); $ Dette-> update_view-> set ( 'forfatter', $ album_data [0] -> forfatter); $ Dette-> update_view-> set ( 'genre_id', $ album_data [0] -> genre_id); $ Dette-> update_view-> set ( 'genres_list', $ dette-> get_genres_list ()); $ Dette-> update_view-> render (TRUE);"read" er en modell metode (vi vil se det senere) som returnerer data ($ album_data) av albumet med et ID som er lik $ id. Deretter sendes hvert eneste element i det returnerte datalbumet til visningen.
Opprettingsmetoden mottar data, for et nytt album, fra visningen, og data lagres i databasen.
$ album_data = array ('name' => $ this-> input-> post ('navn'), 'author' => $ this-> input-> post ('author'), 'genre_id' => $ dette -> input-> post ('genre_id')); $ Dette-> album_model-> opprette (album_data $); url :: omdirigere ( 'album');$ album_data er en matrise som inneholder POST-data fra visningen. For å lagre albumet, overføres matrisen til opprettelsesmodellen. Den siste linjen er et anrop til en hjelpemetode. Hjelpere er bare funksjoner som hjelper deg med utvikling. Hjelperklassene lastes automatisk av rammen. Hjelperne er erklært som statiske metoder for en klasse, så det er ikke nødvendig å instantiere klassen. I dette tilfellet kalles metoden "omdirigering" av hjelperen "url" og forteller Kohana å omdirigere nettleseren til albumkontrollanten. Dette unngår en ny innsats (for eksempel å trykke på F5).
"Hjelpere er bare funksjoner som hjelper deg med utvikling."
Oppdaterings- og slettemetodene fungerer på samme måte som opprettelsesmetoden ovenfor.
Den siste metoden get_genres_list får sjangeren listen fra modellen ($ db_genres_list) og bygger et nytt array ($ genres_list) for velg boksen i visningene.
$ db_genres_list = $ this-> genre_model-> get_list (); $ genres_list = array (); hvis (sizeof ($ db_genres_list)> = 1) foreach ($ db_genres_list som $ item) $ genres_list [$ item-> id] = $ item-> navn; returnere $ genres_list;Trinn 8: Opprett prosjektmodell
La oss nå lage modeller for vårt webprogram. Husk disse konvensjonene.
Her er albummodellkoden. Opprett en fil som heter album.php i application / modeller / og lim inn koden under på den.
album_table = 'album'; $ this-> genre_table = 'genrer'; offentlig funksjon lese ($ id) $ this-> db-> hvor ('id', $ id); $ query = $ this-> db-> get ($ this-> album_table); returner $ query-> result_array (); offentlig funksjon slette ($ id) $ this-> db-> delete ($ this-> album_table, array ('id' => $ id)); offentlig funksjon oppdatering ($ id, $ data) $ this-> db-> oppdatering ($ this-> album_table, $ data, array ('id' => $ id)); offentlig funksjon lage ($ data) $ this-> db-> insert ($ this-> album_table, $ data); offentlig funksjon get_list () $ this-> db-> velg ('albums.id som id, albums.name som navn, albums.author som forfatter, genres.name som genre'); $ Dette-> DB> i ($ dette-> album_table); $ Dette-> DB> delta ($ dette-> genre_table, 'genres.id', 'albums.genre_id'); $ query = $ this-> db-> get (); returner $ query-> result_array ();
Alle metodene i modellene gjør bruk av Query Builder-syntaks. Dette Kohana-verktøyet gir raskere utviklingstider for databasen og forenkler spørsmåletes opprettelse.
To medlemmer variabler er erklært øverst i klassen:
privat $ album_table; privat $ genre_table;
Disse medlemmene er private fordi jeg vil begrense synligheten bare til denne klassen. De er beholderne for databasetabellnavnene.
Den første linjen i konstruktormetoden laster inn Kohana databasebiblioteket til $ this-> db. I den andre og tredje linjen initialiseres de to klassemedlemmene.
ordnede :: __ konstruksjon (); $ this-> album_table = 'albums'; $ this-> genre_table = 'genrer';
Spørringen i lese-metoden henter albumoppføringer som har en bestemt identifikator ("$ id").
$ this-> db-> hvor ('id', $ id); $ query = $ this-> db-> get ($ this-> album_table); returner $ query-> result_array ();
Forespørselen i slettemetoden sletter albumets tabellrad med en bestemt identifikator ("$ id").
$ this-> db-> delete ($ this-> album_table, array ('id' => $ id));
Spørringen i oppdateringsmetoden oppdaterer albumtabellraden som har en bestemt identifikator ("$ id") med nye verdier fra "$ data" -arrayen.
$ this-> db-> update ($ this-> album_table, $ data, array ('id' => $ id));
"$ Data" -arrayet må inneholde opptaksnavn som nøkler til arrayet, og verdien som verdier av arrayet. Feltet "$ data" må ha dette skjemaet:
$ data = array ('name' => 'album_name', 'author' => 'author_name', 'genre_id' => 'genre_id');
Spørringen i opprettingsmetoden legger inn en ny post med verdier av "$ data" -arrayen.
$ this-> db-> insert ($ this-> album_table, $ data);
Feltet "$ data" må ha dette skjemaet:
$ data = array ('id' => 'album_id', 'name' => 'album_name', 'author' => 'author_name', 'genre_id' => 'genre_id');
Spørringen i get_list-metoden henter alle albumrader.
$ this-> db-> select ('albums.id som id, albumnavn som navn, albums.author som forfatter, genre.navn som sjanger'); $ Dette-> DB> i ($ dette-> album_table); $ Dette-> DB> delta ($ dette-> genre_table, 'genres.id', 'albums.genre_id'); $ query = $ this-> db-> get (); returner $ query-> result_array ();
Nå, sjangre-modellen. Opprett en fil som heter genre.php i application / modeller / og lim inn koden under den:
genre_table = 'sjangre'; funksjon get_list () $ query = $ this-> db-> get ($ this-> genre_table); returner $ query-> result_array ();
Denne modellen er veldig enkel, så jeg vil ikke kaste bort noe mer tid til å kommentere det. Modeller og kontrolleren er klare til å gå. La oss nå jobbe med visningene.
Visninger er filer som inneholder presentasjonslaget for søknaden din. Hensikten er å holde denne informasjonen skilt fra programlogikken din for enkel gjenbrukbarhet og renere kode. For dette prosjektet er det nødvendig med tre visninger: En visning for å liste albumsamlingen, en visning for å lage et nytt album og en visning for å redigere et eksisterende album.
Opprett en fil som heter list.php i application / visninger / og lim inn følgende kode i:
CD COLLECTION
CD-samling | ||||
Albumnavn | Forfatter | Sjanger | "$ Element-> navn." | "; ekko ""$ Element-> forfatter." | "; ekko ""$ Element-> sjangeren." | "; ekko "" .Html :: anker ( 'album / slette /'.$ element-> id, html :: image (' assets / images / delete.png '))." | "; ekko "" .Html :: anker ( 'album / show_update_editor /'.$ element-> id, html :: image (' assets / images / edit.png '))." | "; ekko "";?>
Denne visningen viser en HTML-side som inneholder en liste over alle albumene. Denne listen er opprettet ved hjelp av foreach loop som skriver ut informasjonen i et HTML-tabell. For hver albumrad er det to bilder: et "rødt kryss" og en "pocketbook". De kobler henholdsvis kontrolleren slett metoden og oppdateringsmetoden. Begge passerer albumet ID til albumkontrolleren ved hjelp av en få forespørsel. Over listen er det en knapp for å lage nye album. I denne koden bruker vi også en html-hjelper som tilbys av Kohana, som øker operasjonen til å skrive html-sider.
La oss nå lage en fil som heter create.php i application / visninger /.
CD COLLECTION
Opprett nytt album | ".form :: label ('navn', 'navn:')." | "; ekko "" Form mens :: input ( 'navn', ")." | "; ekko ""; ekko "
".form :: label ('author', 'Author:')." | "; ekko "" Form mens :: input ( 'forfatter' ")." | "; ekko "
".form :: label ('genre', 'Genre:')." | "; ekko ""Form mens :: dropdown ( 'genre_id', $ genres_list)." | "; ekko "
".form :: submit ('submit', 'Opprett album')." | "; ekko "
Sist men ikke minst er oppdateringsvisningen. La oss lage en fil som heter update.php i application / visninger /.
CD COLLECTION
Oppdater album | ".form :: label ('navn', 'navn:')." | "; ekko "".form :: input ('navn', $ navn)." | "; ekko ""; ekko "
".form :: label ('author', 'Author:')." | "; ekko "".form :: input ('author', $ author)." | "; ekko "
".form :: label ('genre', 'Genre:')." | "; ekko "".form :: dropdown ('genre_id', $ genres_list, $ genre_id)." | "; ekko "
".form :: send inn ('send', 'Oppdater album')." | "; ekko "
Den første er en enkel editor som lar brukeren sette inn informasjon om et nytt album.
Feltene som forfatter og navn vil bli satt inn ved hjelp av en HTML-inngang og sjanger med en
kombinasjonsboksen. Når brukeren klikker på Opprett-knappen, er all informasjon bestått,
som en POST-forespørsel, til opprett / oppdateringsmetoden i albumkontrolleren. Når kontrolleren mottar disse postene
variabler, kaller det modellen som legger inn et nytt album i databasen. Skjemaene, i begge visningene, gjør bruk av Kohana formhjelp.
For å gi litt stil til vår søknad, opprett eiendeler mappe i Kohana-roten på samme nivå i søkemappen. Nå, åpne den og opprett to nye mapper: css og Bilder.
I css mappe opprette en ny fil som heter style.css og lim inn dette:
en font-familie: Verdana, Genève, Arial, Helvetica, sans-serif; font-weight: normal; skriftstørrelse: 12px; farge: # 00F; vertical-align: text-topp; img grense: 0; label font-family: Verdana, Genève, Arial, Helvetica, sans-serif; font-weight: normal; skriftstørrelse: 12px; input border: 1px solid # 000; velg bredde: 185px; table.editor text-align: center; font-familie: Verdana, Genève, Arial, Helvetica, sans-serif; font-weight: normal; skriftstørrelse: 11px; farge: #fff; bredde: 280px; bakgrunnsfarge: # 666; grense: 0px; border-collapse: collapse; grenseavstand: 0px; table.editor td.editor_title bakgrunnsfarge: # 666; farge: #fff; polstring: 4px; tekstjustering: venstre; font-weight: bold; skriftstørrelse: 16px; table.editor td polstring: 4px; table.list text-align: center; font-familie: Verdana, Genève, Arial, Helvetica, sans-serif; font-weight: normal; skriftstørrelse: 11px; farge: #fff; bredde: 280px; bakgrunnsfarge: # 666; grense: 0px; border-collapse: collapse; grenseavstand: 0px; table.list td.item bakgrunnsfarge: #CCC; farge: # 000; polstring: 4px; tekstjustering: venstre; grense: 1px #fff solid; table.list td.list_title, table.list td.headers bakgrunnsfarger: # 666; farge: #fff; polstring: 4px; tekstjustering: venstre; border-bottom: 2px #fff solid; font-weight: bold; table.list td.list_title font-size: 16px; table.list td.headers font-size: 12px;
Kopier nå følgende bilder til Bilder mappe:
Det er alt. Pek nettleseren din til http: //localhost/kohana/index.php/album og du bør se noe som ligner på dette:
Hvis du prøver å lage et nytt album eller redigere en eksisterende, bør du se noe som ligner på dette:
Selvfølgelig er det nødvendig med forbedringer for dette programmet, men med en liten mengde kode har du opprettet et lite webprogram.
Nå vet du hvordan du bruker MVC-mønsteret med Kohana, og hvordan du bruker databasebiblioteker og hjelpere. For å lære mer, les den offisielle dokumentasjonen.
Takket være Kohana er kodevedlikehold en enkel oppgave, og å legge til nye funksjoner er en cinch. Jeg håper du likte denne opplæringen. Hold deg oppdatert for å lære mer om Kohana.