Kohana est un framework PHP basé sur CodeIgniter mais dont le code a complètement été ré-écrit.
Ses différences par rapport à CodeIgniter (extraites de cette page) sont :
- Utilise les fonctionnalités strictes de PHP5 en matière de programmation orientée objet.
- Développé par une communauté, et non par une compagnie.
- Les variables
$_GET,$_POST,$_COOKIE,$_SESSIONsont disponibles — CodeIgniter écrase$_GETavec sa ré-écriture d’URLs. - Les contrôleurs et les modèles doivent être nommés respectivement « MonControleur_Controller » et « MonModele_Model ». Cela empêche d’avoir des conflits dans les noms de classes. Par exemple, on pourrait avoir un contrôleur «
Openid_Controller» et un modèle «Openid_Model». - Auto-chargement des classes. Les fichiers requis pour la classe sont inclus automatiquement lors de l’appel de cette dernière. Ils ne sont pas pré-loadés.
- Système d’évènements. Les évènements dans Kohana peuvent être ajoutés, remplacés ou enlevés complètment. Cette fonctionnalité s’apparente aux filters de WordPress.
Exemple de code avec CodeIgniter
class Bienvenue extends Controller {
function Bienvenue() {
parent::Controller();
$this->load->library('session');
$this->load->model('billets');
}
function index() {
$data = array();
$data['message'] = "Bienvenue dans CodeIgniter";
$this->load->view('bienvenue', $data);
}
}
Exemple de code avec Kohana
class Bienvenue_Controller extends Controller {
function __construct() {
parent::__contruct();
$this->load->library('session');
$this->load->model('billets');
}
function index() {
$this->layout=$this->load->view('bienvenue');
$this->layout->message = "Bienvenue dans Kohana";
$this->layout->render(true);
}
}
J’ai joué un peu avec le framework — j’ai tenté de migrer mon blogue vers Kohana en utilisant ce tutoriel, mais sans succès. J’ai abandonné lorsque j’ai été incapable de loader une librairie dans un modèle — comme je faisais très bien avec CodeIgniter.
Différences notables avec CodeIgniter
Voici une petite liste des choses qui m’ont ralenties dans le passage (pas encore complété) de mon application vers Kohana :
- Il est impossible de loader quoi que ce soit dans un modèle.
- Comme les vues sont maintenant des objets, il est impossible d’avoir accès à la variable
$thisinteragir avec le modèle ou une librairie. Tout doit se faire dans le contrôleur et non dans la vue. J’avoue que c’est une meilleure pratique, mais je n’avais pas pensé à cela lorsque j’y codé mon application! - Comme les helpers sont maintenant des objets eux aussi, toutes les fonctions deviennent des méthodes. Exemple:
site_url()devienturl::site(). Le URL helper ne contient pas de méthodeMon erreur — la méthode appartient au HTML helper…anchorcomme celui de CodeIgniter. J’utilisais cette méthode abondamment pour créer rapidement des éléments HTMLA. Il a fallu que je recopie la méthode de CI.- à suivre…
J’ai bien aimé ce que j’ai vu par contre — le fait que le système soit conçu pour utiliser les fonctionnalités d’OOP de PHP 5 est un gros plus — cela force le développeur à utiliser des méthodes plus réfléchies et mieux structurées.
Le fait que le développement du framework soit contrôlé par la communauté me fait aussi pencher vers celui-ci. C’est également un framework très jeune et assez prometteur. Lorsque j’aurai à bâtir ma prochaine application web, il fera partie des frameworks que j’envisagerai d’utiliser!
Aucun commentaire n'a été posté pour ce billet.