Al enkele weken spendeer ik enkele uren per week aan het inlezen van de documentatie van Kohana 3. Ik heb veel gezien; de modules die er zijn zijn me duidelijk en ook het hele MVC gebeuren word me steeds duidelijker. Ik heb geen ervaring met een (H)MCV framework en wil graag Kohana leren om toch grotere en gestructureerde projecten te gaan schrijven.
Nu heb ik het idee dat ik kan beginnen, maar ik kan niet met een goede opzet op de proppen komen.
Mijn achtergrond
Het schrijven van webapplicaties in PHP doe ik al een paar jaar. Echter is het er nog nooit van gekomen om een design pattern te leren en daar wil ik graag verandering in brengen. MVC leek me een goed idee gezien er veel te vinden is op het web en de manier van werken sprak me aan.
Ik heb websites gemaakt met PHP/MySQL en aan de client-side HTML/AJAX. Echter altijd gewoon platte code met includes om te code toch nog een beetje onderhoudbaar te maken.
Waarom Kohana?
Kohana is (zoals ik het begrepen heb) geschreven door de elite van CodeIgniter. Kohana is volledig OOP en zeer strict (PHP 5.2+). Kohana 3 is volledig herzien ten opzichte van de vorige versie. Erg snel en een kleine footprint. Zend Framework is gewoon te groot, ik wil het iets overzichtelijker. Kohana is een HMVC framework, waardoor het makkelijk uit te breiden is en code is goed herbruikbaar.
Front/index controller
Kohana maakt gebruik van routes, maar alles komt toch eigenlijk op 1 controller binnen die vervolgens gaat bekijken wat er met de request gedaan gaat worden. Je zit toch met je $user die je op 1 plek op wil halen en vervolgens kun je dan gepersonaliseerde info weergeven. Of eventueel een registreer-/loginform bieden als de bezoeker niet ingelogd is.
Op de Kohana website lees ik "Kohana 3 routes are very powerful and flexible, don't be afraid to use as many as you need to make your app function the way you want!"[1] Dus 1 controller die alles regelt is geen goed idee, maar moet ik dan per pagina/controller een user instance aanmaken en een "if not logged_in" iets regelen?
Op de 3.0 docs vind ik wel een manier van, in ieder geval van toepassing op de templates, maar ik weet niet of deze up-to-date is. [2]
Moet ik in bovenstaand voorbeeld een view openen naar de index pagina van de website? M'n user instance gaan maken en bepalen welke menu-items deze user heeft? Het gebruik van een database & session instance is erg makkelijk in Kohana en ook het cache systeem en standaard Auth systeem is erg bruikbaar. Ik denk Auth, Database, Cache & Session alle 4 te gaan gebruiken, wat ik met het template systeem doe weet ik nog niet. Misschien is het verstandig om iets als Smarty te gaan gebruiken, maar dat moet ik nog even uitzoeken. Het standaard template systeem voldoet opzich prima.
Kortom
De basis is me duidelijk, alle "Hello world!" voorbeelden heb ik gezien, maar hoe ga ik nu verder? Hoe gaat de Controller_Index eruit zien met het oog op een interactieve website met inlogmogelijkheden, pagina's, een forum etc. Kan iemand me een duwtje in de goede richting geven?
Websites/tutorials/presentaties
- http://kohanaframework.org/3.2/guide/ De officiële documentatie, sommige voorbeelden missen nog of linken naar pagina's die niet meer bestaan
- http://kerkness.ca/kowiki/doku.php Veel informatie, maar helaas Kohana 3.0 ipv Kohana 3.2. De meeste info klopt nog.
- http://www.slideshare.net...sing-mvc-framework-kohana Erg veel informatie maar weer geen duidelijk voorbeeld van hoe je de basis opzet
- http://ferdychristant.com/blog/archive/DOMM-7GTPYA Volgens mij zoals het zou moeten, maar geen weer geen code example
- http://www.slideshare.net...for-scalability-with-hmvc Mooie uiteenzetting van HMVC in Kohana 3
...
[1] http://kohanaframework.org/3.2/guide/kohana/tips
[2] http://kerkness.ca/kowiki...-site:create_the_template
Nu heb ik het idee dat ik kan beginnen, maar ik kan niet met een goede opzet op de proppen komen.
Mijn achtergrond
Het schrijven van webapplicaties in PHP doe ik al een paar jaar. Echter is het er nog nooit van gekomen om een design pattern te leren en daar wil ik graag verandering in brengen. MVC leek me een goed idee gezien er veel te vinden is op het web en de manier van werken sprak me aan.
Ik heb websites gemaakt met PHP/MySQL en aan de client-side HTML/AJAX. Echter altijd gewoon platte code met includes om te code toch nog een beetje onderhoudbaar te maken.
Waarom Kohana?
Kohana is (zoals ik het begrepen heb) geschreven door de elite van CodeIgniter. Kohana is volledig OOP en zeer strict (PHP 5.2+). Kohana 3 is volledig herzien ten opzichte van de vorige versie. Erg snel en een kleine footprint. Zend Framework is gewoon te groot, ik wil het iets overzichtelijker. Kohana is een HMVC framework, waardoor het makkelijk uit te breiden is en code is goed herbruikbaar.
Front/index controller
PHP:
1
2
3
4
5
6
| <?php Route::set('default', '(<controller>(/<action>(/<id>)))') ->defaults(array( 'controller' => 'index', 'action' => 'index', )); |
Kohana maakt gebruik van routes, maar alles komt toch eigenlijk op 1 controller binnen die vervolgens gaat bekijken wat er met de request gedaan gaat worden. Je zit toch met je $user die je op 1 plek op wil halen en vervolgens kun je dan gepersonaliseerde info weergeven. Of eventueel een registreer-/loginform bieden als de bezoeker niet ingelogd is.
Op de Kohana website lees ik "Kohana 3 routes are very powerful and flexible, don't be afraid to use as many as you need to make your app function the way you want!"[1] Dus 1 controller die alles regelt is geen goed idee, maar moet ik dan per pagina/controller een user instance aanmaken en een "if not logged_in" iets regelen?
Op de 3.0 docs vind ik wel een manier van, in ieder geval van toepassing op de templates, maar ik weet niet of deze up-to-date is. [2]
PHP:
1
2
3
4
5
6
7
8
9
10
| <?php defined('SYSPATH') or die('No direct script access.'); class Controller_Index extends Controller { public function action_index() { // En nu? } } // End Index |
Moet ik in bovenstaand voorbeeld een view openen naar de index pagina van de website? M'n user instance gaan maken en bepalen welke menu-items deze user heeft? Het gebruik van een database & session instance is erg makkelijk in Kohana en ook het cache systeem en standaard Auth systeem is erg bruikbaar. Ik denk Auth, Database, Cache & Session alle 4 te gaan gebruiken, wat ik met het template systeem doe weet ik nog niet. Misschien is het verstandig om iets als Smarty te gaan gebruiken, maar dat moet ik nog even uitzoeken. Het standaard template systeem voldoet opzich prima.
Kortom
De basis is me duidelijk, alle "Hello world!" voorbeelden heb ik gezien, maar hoe ga ik nu verder? Hoe gaat de Controller_Index eruit zien met het oog op een interactieve website met inlogmogelijkheden, pagina's, een forum etc. Kan iemand me een duwtje in de goede richting geven?
Websites/tutorials/presentaties
- http://kohanaframework.org/3.2/guide/ De officiële documentatie, sommige voorbeelden missen nog of linken naar pagina's die niet meer bestaan
- http://kerkness.ca/kowiki/doku.php Veel informatie, maar helaas Kohana 3.0 ipv Kohana 3.2. De meeste info klopt nog.
- http://www.slideshare.net...sing-mvc-framework-kohana Erg veel informatie maar weer geen duidelijk voorbeeld van hoe je de basis opzet
- http://ferdychristant.com/blog/archive/DOMM-7GTPYA Volgens mij zoals het zou moeten, maar geen weer geen code example
- http://www.slideshare.net...for-scalability-with-hmvc Mooie uiteenzetting van HMVC in Kohana 3
...
[1] http://kohanaframework.org/3.2/guide/kohana/tips
[2] http://kerkness.ca/kowiki...-site:create_the_template