Skip to content

pa-de-solminihac/clementine-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clementine Framework logo

Présentation

Clementine est un framework MVC pour PHP, c'est un logiciel libre sous licence MIT.

Issu d'une expérience...

Clémentine est partie d'une frustration : quand on importe des librairies dans un projet web, on doit souvent les adapter à notre besoin. Et il n'est pas toujours facile de le faire proprement.

Même lorsqu'elles ont été conçues pour être flexibles, avec des hooks par exemple, on finit souvent par tomber sur un cas qui n'a pas encore été prévu. Par exemple ce hook qui nous aurait bien arrangé mais qui n'existe pas encore.

Dans des cas un peu plus favorables, on peut utiliser de l'injection de dépendances.

On étend alors les librairies importées en utilisant des classes dérivées, afin de surcharger certains comportements et on injecte nos instances de classes dérivées plutôt que de classes d'origine... si l'injection de dépendances a été prévue à l'endroit qui nous intéresse. Mais ce n'est malheureusement pas toujours le cas.

On se retrouve alors à devoir modifier le code source des librairies qu'on a importées. Et là, c'est le drame : on ne peut plus suivre facilement les mises à jour.

Et si un framework s'occupait d'utiliser automatiquement nos classes dérivées partout, à la place des classes d'origine ? Plus besoin de modifier le code source des classes qu'on a importées ! Nos modifications restent dans leurs propres fichiers, elles sont prises en compte automatiquement, et on peut mettre à jour plus sereinement les librairies importées.

L'expérience Clémentine était née.

Cette expérience a pris pour terreau un framework MVC inspiré de Zend Framework, pour devenir un outil resté simple, mais mature.

Un outil simple

  • Pas de code généré, pas de fichiers de cache dont on ne retrouve plus la source : on reste sur du code interprété, plus facile à maintenir.
  • Debug facilité : pour que vous trouviez rapidement cette requête SQL, ou pour que vous ne laissiez plus passer la moindre Notice (vous pouvez en recevoir une trace par e-mail).

De la modularité partout

  • Dans Clémentine, tout fonctionne sous forme de modules, même le coeur du framework... et tous les modules sont surchargeables, y compris les surcharges.

Tout est surchargeable

Le framework garantit de toujours pouvoir intercaler une classe à n'importe quel niveau de l'héritage.

Comme on y prend vite goût, on a utilisé le concept partout :

  • fichiers de configuration
  • contrôleurs
  • modèles
  • vues
  • controleurs
  • helpers

On peut même utiliser l'héritage sur des modules (tout ou partie) en quelques lignes.

Par exemple si vous avez

class Robin extends Batman

Clémentine vous permettra d'injecter une classe Joker entre les deux, sans modifier une seule ligne de Robin ni Batman, et le framework comprendra automatiquement que :

class Robin extends Joker
class Joker extends Batman

Et si besoin, vous pouvez même changer l'ordre d'héritage des classes comme vous trieriez des calques dans Photoshop.

Les performances sont excellentes

Ce n'est pas parce qu'on n'utilise pas de code généré ou de fichiers cache que ça doit ramer... et ça ne rame pas du tout, promis !

Pour l'exemple : une page "hello world" est rendue en 2ms. Ça ne vaut sans doute pas un benchmark approfondi mais ça donne une idée du temps pris pour faire tourner le framework lui même.

Alors... lancez l'installeur

  • Pour une première installation
  • Pour la gestion des mises à jour des modules et migrations de la base de données
  • Pour la gestion des dépendances. Vous pouvez choisir d'imposer les versions de modules (si vous n'êtes pas prêt pour un passage de version majeure) : l'installeur choisira les versions des autres modules de manière à respecter ces choix sans casser la compatibilité
  • Vous pouvez même utiliser votre propre dépôt de modules si vous voulez

Et laissez vous guider pour installez vos premiers modules !

Installation

Site officiel

About

PHP MVC framework under MIT license

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages