Thémosis est mon péché mignon il faut le dire ! Depuis quelques années on m’entend scander "Themosis!" par ci "Themosis par là", l'équipe n’en peut plus... Il est temps de vous faire découvrir et surtout partager ma vision de ce framework.
Dans un premier temps, j’ai dit ‘Framework’ car Themosis est un framework PHP qui intègre Wordpress. Il a été développé (et est toujours développé) par une agence Belge qui porte le même nom : Themosis Studio
Chez TroisPointZero, nous l’utilisons depuis le début. C’est à dire depuis la version 1.2, même si aux première utilisations nous pensions que son utilité était limitée. Il fallait parcourir et découvrir l’outil pour en comprendre et en sortir ses atouts (et ses faiblesses).
Donc vous l’aurez compris le but de cet article n’est pas de présenter en détail le fonctionnement du framework, une documentation existe pour cela et se suffit à elle même pour savoir l'installer et l'utiliser. Mais vous présenter rapidement ses forces et vous faire gagner du temps sur le choix de cette techno' car tous les types de projets ne conviennent pas.
Ce que propose Themosis en quelques mots
Comme évoqué précédemment, Themosis est un framework, dans lequel vous retrouverez les indémodables gestionnaires de librairies (composer & NPM), qui va permettre d’intégrer des outils beaucoup plus facilement via une simple commande : Carbon, etc.. et par conséquent de gagner du temps sur votre développement.
Vous y retrouverez également une architecture MVC (dossiers Controllers/Models/Views) et un système de routing qui permettra de matcher vos routes avec un controller pour assurer une propreté et une lecture facilitée des flux et du code. Contrairement à un Wordpress standard où la partie dynamique (PHP) se trouve directement dans la vue.
Un autre point important à relever est l’utilisation de générateurs de vues : Blade et Twig. L’existence d’un dossier de vues améliore déjà nettement la propreté du découpage mais le fait de pouvoir utiliser les fonctionnalités de Blade ou Twig permet un gain de temps certain sachant que les boucles sont très présentes sur un projet Wordpress (listing d’articles, custom post types, etc..).
Enfin, Eloquent fait partie du lot. C'est un réel atout pour la cohérence et la manipulation des données, qu’elles soient natives sous Wordpress (Posts) ou pour des tables/données personnalisées.
Bien sûr, d’autres composants comme PHPUnit, les fichiers d’environnements, webpack, font parties intégrantes du package.
Vous l’aurez compris le but du studio de développement est de se rapprocher le plus possible d’un framework comme Laravel ou Symphony.
N’oublions pas Wordpress !
Évidemment, Wordpress y est intégré par défaut notamment sur 2 points :
- Son système de routing : En plus des routes personnalisés, les routes ‘templatées’ de Wordpress y sont présentes
- L'intégration du système de thèmes de Wordpress
Au niveau du back office, il faut savoir que rien ne change ainsi qu'en base de données. Tout est à l'identique par rapport à un projet WP standard.
Dans quels cas l'utiliser ?
La typologie de projet est toujours au cœur du choix ou non d'une technologie. En l’occurrence Themosis intègre Wordpress donc si les fonctionnalités natives de Wordpress sont inutiles ne l'utilisez pas (ça va de soit !). Par contre si c'est le cas, il s'inscrit positivement dans ces différents types de projets :
- Un projet qui nécessite un ajout de tables personnalisés en base de données : comme dit précédemment, Eloquent permet de matcher avec toutes les tables rapidement et de pouvoir manipuler les données rapidement. Pas besoin de recréer des méthodes, etc..
- Un projet Wordpress qui nécessite une couche de sécurité supplémentaire : la sécurité est toujours un sujet sensible, en ce sens, l'arborescence de Themosis (cf image ci dessus), le système de routing et l'utilisation de controllers permettent de changer la connaissance basique des dossiers natifs de Wordpress et de garder une réelle cohérence des données.
- Un projet complexe qui dure dans le temps : si votre projet doit à durer dans le temps avec des fonctionnalités qui peuvent potentiellement évoluer, l'arborescence définie précédemment permet de créer un code modulaire beaucoup plus facile à maintenir que sur une installation Wordpress native.
Pour les projets plus communs et/ou simples, nous pensons que l'utilité de Themosis est moins nécessaire. Cela peut complexifier un projet de son installation à son utilisation surtout si ce que propose le framework n'a pas de plus-value.