Fork Clementine PHP MVC Framework on GitHub

framework MVC libre en PHP

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

Avec de la modularité partout

Où 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 :

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 !

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

Lancez l'installeur

Et laissez vous guider pour installez vos premiers modules !

Installation