Kohana, CodeIgniter, Framework PHP - Un comparatif entre Kohana et CodeIgniter
Publié dans Divers, Framework, Linux, Apache, PHP, MYSQL, Ruby on Rails, Tutoriaux par Bruno Flaven, le Dimanche 11 octobre 2009
On avait affirmé haut et fort notre choix d’un framework PHP à savoir CodeIgniter et voilà qu’un fork de CodeIgniter nommé Kohana viendrait perturber la hiérarchie qui s’élabore lentement parmi les frameworks PHP : Symphony, Zend, CakePHP et puis enfin CodeIgniter.
Kohana ?
Même si le nom évoque plus un animal quasi mascotte de l’Australie, le Koala qu’un framework, une petite recherche sur le site et sur le web nous informe un peu plus. L’origine du nom donne une petite idée de l’intentionnalité des auteurs. En langue sioux, Kohana signifie "swift" c’est à dire rapide, véloce… Si les auteurs ont recherché cette filiation, c’est sans doute pour offrir à la communuaté PHP un framework rapide et robuste. Le slogan qui accompagne Kohana en dit plus que la définition du nom elle-même "Swift, Secure, and Small PHP 5 Framework". Nous voilà donc prevenu sur ce qui a présidé à la naissance de ce Framework inspiré par CodeIgniter, une sorte de "Little Big Man" du framework.
En tous les cas, voilà la défintion officielle données par les auteurs, plus explicite on ne peut pas.
What is Kohana?
Kohana is a PHP5 framework that uses the Model View Controller architectural pattern. It aims to be secure, lightweight, and easy to use.
Avant de livrer in extenso un comparatif avec CodeIgniter, on se permet d’attirer votre attention sur deux atouts majeurs de Kohana. Ces points seront d’ailleurs repris abondamment dans le comparatif, comparatif auquel à largement contribué BinBin que nous remercions chaudement !
Kohana et ses librairies
Bien que le titre évoque plus un groupe de rock à la manière de Johnny Diesel and the Injectors, ces éléments vous seront d’une grande utilité et il est souhaitable de télécharger l’ensemble lorsque vous téléchargerez la totalité du Framework.
Le téléchargement de Kohana inclut toutes les "libraries", les "helpers" et les "views" mais il vous faudra aussi sélectionner notamment les modules qui font la force de Kohana.
- Archive – Compressed archive creation, supports zip, tar, gzip, and bzip.(module d’archivage)
- Auth – Simple authentication and user management. Uses ORM for models. (module d’authentification)
- Gmaps – Google Maps integration, geolocation, and API support. (module de d’interfaçage avec Google Maps)
- Kodoc – Dynamic self-generated documentation. (Beta!) (module de génération de documentation disponible en Beta)
- Payment – Provides merchant and payment gateway wrappers. Supports Authorize.net, PayPal, Trident, Trust Commerce, and YourPay. (module de paiment)
Kohana + quelques outils
Incluez aussi les deux outils qui vous sont à l’heure actuelle proposés
- Markdown – Text formatting tool that offers text to HTML markup with a natural syntax.
- SwiftMailer – Feature-rich emailing library that supports HTML email, SMTP connections, and many other features.
Un petit mot sur l’ORM de Kohana
Selon, l’adage bien connu pourceux d’entre vous qui viennent du RoR "convention over configuration", le recours à un ORM réduit considérablement la quantité de code à produire pour réaliser les tâches habituelles à exécuter sur une BDD. Tâches que l’on a coutume de résumer par l’acronyme CRUD (Create, Read, Update et Delete).
C’est aussi un facteur de rapidité et de viabilité du code, en réduisant l’écriture de code personnel donc en minimisant de facto l’apparition de bugs potentiels.
Deux bémols principaux au recours à un ORM sous Kohana, ils sont d’ailleurs mentionnés dans l’introduction de Kohana sur le chapitre sur l’ORM:
- L’ORM ne produit pas toujours le code le plus efficient pour opérer des requêtes SQL.
- Bien que Kohana possède des "drivers" (pilotes) pour se connecter aux principales BDD qui autorisent "foreign key" (clé étrangère) tel que PostgreSQL, MSSQL et MySQL. Pour MySQL, il vous faudra utiliser en priorité des tables de type InnoDB et non MyISAM.
Source : http://docs.kohanaphp.com/libraries/orm
Définition d’un ORM
A titre de rappel, voici le définition donnée par wikipédia.
Un mapping objet-relationnel (en anglais object-relational mapping ou ORM) est une technique de programmation informatique qui crée l’illusion d’une base de données orientée objet à partir d’une base de données relationnelle en définissant des correspondances entre cette base de données et les objets du langage utilisé. On pourrait le désigner par « correspondance entre monde objet et monde relationnel »
Une comparaison entre Codeigniter et Kohana
A tout seigneur tout honneur, on commence par lister les avantages de Kohana bien qu’il ne soit qu’un vassal, pardon un fork de CodeIgniter.
Les points forts de Kohana
Ils sont nombreux, les voici dans le désordre mais quasiment tous au complet.
- Kohana intègre au maximum les fonctionnalités d’un langage Orienté Objet (très OOP, Object-oriented programming) en utilisant PHP5
- Kohana est 100% compatible UTF-8
- Kohana est léger. Il est extensible à souhait (l’argument de "scalability" ou d’extensibilité)
- Kohana possède une architecture souple et modulaire
- Kohana, comme tout bon framework, il s’appuie sur le Design pattern MVC
- Kohana comprend des
Add-onspour technologies externes( Google maps, modules de paiements). Les fameuseslibraries(librairies) cités plus haut. - Kohana comprend des Add-ons pour faire un espace membre (authentification via session, déconnexion etc.)
- Kohana possède un système
profilerplus poussé que Codeigniter. On peut ainsi choisir exactement ce que l’on veut profiler pour débuguer (sessions, cookies, requêtes etc.) - Kohana possède une véritable communauté et n’est pas à l’origine opéré par une agence, ellislab pour ne pas la citer comme CodeIgniter. C’est un argument poru les puristes de l’open-source.
Les points faibles de Kohana
Pour certains, ce n’est pas un point même pertinent mais bon, le cas se présente notamment dans la réécriture complète d’une application. Il peut arriver qu’il faille assurer le maintien d’une application en PHP 4, le coût du redéveloppement complet est souvent trop important, le manque de temps aussi !
- Pas de PHP4. Kohana est en PHP5 et seulement en PHP5
Les points forts de CodeIgniter
- CodeIgniter permet d’utiliser PHP4 comme PHP5. Pas d’obligation de se limiter à PHP5.
- Comme Kohana, CodeIgniter est léger. Il est extensible à souhait (l’argument de "scalability" ou d’extensibilité)
- Comme Kohana, Codeigniter est doté d’une architecture souple et modulaire et s’appuie comme tout framework sur le Design pattern MVC
- CodeIgniter est puissant mais nécessite peu de ressources
- CodeIgniter s’appuie sur une communauté très active et le niveau d’adoption est en croissance constante tant du côte des développeurs que des utilisateur/clients
Les points faibles de CodeIgniter
- A l’inverse de Kohana, CodeIgniter possède peu voir pas du tout d’
Add-onspour utiliser des technologies externes
Conclusion : Kohana vs CodeIgniter
Codeigniter et Kohana sont sur de très nombreux points similaires, ce qui semble normal compte tenu de leur parenté. Outre le plaisir de la découverte pour Kohana, Kohana se révèle beaucoup plus poussé dans ses capacités, essentiellement grâce à ces fameuse Add-ons et libraries. Toutefois, Kohana reste cantonné à PHP5, ce qui reste un handicap surmontable.
Et par rapport aux autres frameworks, ce sont les frameworks idéals car beaucoup moins complexes Zend, CakePHP, Symphony. Ils sont à conseiller à toute développeur qui souhaiterait appréhender facilement et rapidement un Framework PHP.
C’est un peu aussi le sens de la conclusion de l’article qui avait été consacré précédemment sur ce blog à CodeIgniter.
Pour aller plus loin
- Le site officiel de
Kohana: Swift, Secure, and Small PHP 5 Framework
http://www.kohanaphp.com/ - Lien de téléchargement du framework
Kohana
http://www.kohanaphp.com/download - Un site complet pour apprendre Kohana en anglais
Learning Kohana : Helping you with Kohana framework
http://docs.kohanaphp.com/overview - Un aperçu rapide en anglais des avantages du framework
Kohana
http://learn.kohanaphp.com/ - Le site officiel de
CodeIgniter
http://codeigniter.com/
NB : L’origine japonaise du nom Kohana semble à écarter, que ferait-on d’un framework nommé "Petite Fleur" ! A moins que les auteurs soient des fans de Sidney Bechet et comme les auteurs de WordPress font une référence constante au jazz..
Il est aussi probable mais pas certain que les concepteur de flash est pensé à cet adjectif lorsque l’extension des fichiers flash est devenu .swf qu’on nomme communément un “swift”


















Patrig Droumaguet a écrit:
Bonjour,
juste une remarque : on ne peut plus considérer Kohana comme étant un “fork”, étant donné que depuis la version 2 le code est totalement original… et la version 3 est sortie récemment, confirmant d’autant plus ce point
Pour continuer l’argumentaire : Kohana 2.x possède actuellement une documentation qui est à mon avis largement suffisante pour un développeur. La version 3 est toujours “en cours de lancement” et on attend avec impatience la sortie du nouveau site et de la documentation “officielle” (il est tout de même possible de se débrouiller avec le code et les exemples fournis).
13 octobre 2009 à 10:42
Benjamin Schweitzer a écrit:
Documentation complète certes mais communauté moins engagé et moins complète que Codeigniter je trouve
Fork au début oui mais l’inspiration à Codeigniter est toujours là surtout au niveau du mode de fonctionnement de certains Helpers et librairies
15 octobre 2009 à 9:14
mikaweb a écrit:
Je ne suis pas d’accord quand à la communauté. Elle est bien moindre sur Kohana mais surement plus experte que celle sur Ci. Moins de monde mais une petite communauté très réactive, toujours prête à aider, amenant jour après jour des nouveautés, que ce soit des helpers, modules ou des patchs voir carrément des idées reprises par les développeurs.
Car c’est aussi cela une des forces de Kohana. L’ouverture des dév du projet. Contrairement à CI, on a droit souvent à des updates, alors oui parfois on casse la relation entre deux versions, c’est un des points faibles, et encore, c’est le cas pour la version 2 et 3 mais dans les versions mineures, y a eu de gros efforts à ce niveau-là.
Le gros point noir reste simplement la documentation, qui est encore assez légère. Il y a maintenant une API, puis un wiki non officiel bien fourni est apparu.
C’est un framework qui mérite d’être connu à mon avis. D’ailleurs c’est pas étonnant que de plus en plus de monde migre de CI à Kohana, lassé de ne rien voir arriver sur CI ? …
Rester sur PHP 4 en 2009 et bientot en 2010, alors qu’on est déjà à PHP 5.3.1, et que ce dernier permet de grosses avancées, rien que sur la version 5.2, que ce soit les namespaces ou bien simplement une vitesse d’exécution 25% plus rapide en moyenne. J’ose même pas regarder avec la version 4…Pas surprenant non plus que Cakephp ne soit plus autant “soutenu” qu’avant. Rester dans le passé c’est pas bon et puis avoir un hébergeur PHP 4, à moins d’avoir une infrastructure impossible ou trop couteuse à passer sur 5, je voie pas l’intérêt.
18 décembre 2009 à 10:25
Benjamin Schweitzer a écrit:
Je pense qu’il faut voir les choses de façon plus globale.
Rester buter sur tel ou tel framework est un bétise. Chaque projet a ses spécificités je dirais. pour tel type de projet, je prendrais Kohana et pour un autre Codeigniter.
Je bosse pas mal sur Kohana actuellement pour un projet et pour ce type de projet, c’est le pied.
Les documentations sont à mon goût assez complètes pour les deux frameworks. ^^
19 décembre 2009 à 1:37
mikaweb a écrit:
Je ne partage pas ton point de vue même si je suis d’accord que travailler sur différents systèmes en fonction des besoins et une chose très importante voir essentielle.
On pourrait avoir besoin de quelque chose de plus solide de type Symfony pour une application web qui se veut complète, lourde en options, etc… tout en sachant qu’il faudra avoir derrière les ressources serveurs nécessaires.
A contrario, créer une application muni d’un simple système d’articles avec Symfony ou Zend c’est hors de propos, quitte à carrément utiliser “PHP” pour le faire.
Avec la simple utilisation du cadre de n’importe quel framework, on perd énormément en ressources…plus avec certains que d’autres. Et c’est là la grande différence de tous ces framework à mon avis. Chacun se positionne sur un marché totalement différent.
Symfony en a qu’en faire des petits réseaux alors que les développeurs de CI eux se mettent dans la tête qu’il faut cibler le plus de monde possible, et pour cela la rétro-compatibilité avec PHP4 est le meilleur moyen…c’est un argument fort pour le marché de niche. Car oui pour moi, considérer PHP4 comme avantage c’est un non-sens. C’est ce privé d’un potentiel immense, notamment au niveau de l’OO.
Pour moi, le type qui est sous PHP5 et qui développe une petite application, il doit se tourner sur Kohana et non sur CI (si on n’avait que les deux à choix) et si il souhaite développer une grosse application, il utilisera Symfony.
Le seul cas où il ira utiliser CI, c’est si il ne peut pas faire autrement que de rester sous PHP4.
22 décembre 2009 à 3:03
Benjamin Schweitzer a écrit:
Bah le principal je pense est que le projet soit au final stable et extensible pour une simplicité d’un développement futur.
Je me sens bien avec Kohana ou Codei igniter et je me sens mal avec Symphony par exemple. (Mais là n’est pas être pas le problème.
22 décembre 2009 à 3:41