Software is like sex... It's better when it's free.

Projets - SillySmart Framework

SillySmartSillySmart est un framework MVC PHP5 développé par Florian Collot et moi-même, direction artistique du projet réalisée par Charles Maunoury (logo, site web, charte, …) et avec l’aimable participation de Guillaume Lefèvre pour les maquettes de l’installeur et du back office.

Après avoir testé Zend, Symfony ou encore Cake sans y trouver la modularité et la simplicité d’évolution que nous voulions, nous nous sommes lancés dans la réalisation de notre propre framework.

Il adopte plusieurs fonctionnalités plus ou moins similaires à ces ainés d’un point de vue architecture et concepts, tout en apportant une approche différente au niveau de la couche vue.

En effet, fort d’expériences dans le domaine du web réalisées par des équipes aux compétences bien distinctes (architecte logiciel, programmation côté serveur, côté cliente à l’aide d’ajax, web designer, …), nous avons décidé d’opter pour une solution XML / XSL au niveau de cette couche afin d’apporter plus de simplicité et de souplesse à nos applications.

Le XSL offre des bases très solides d’un point procédural et est très accessible pour quelqu’un n’ayant jamais programmé dans les langages orientés objet. Nous n’avons jamais trouvé de lisibilité en utilisant le mélange PHP / HTML dans la génération de la page finale, même avec l’aide de templates phtml ou en génération ‘objet’ ; le code demeurait toujours difficilement maintenable et évolutif.

De plus, avec l’essor des moyens de communication web (rss, atom, web service, ajax, …), nous pensons sincèrement qu’une application objet générant du XML peut à peu près tout proposer, et ce, sans trop de modifications.

Ainsi, le framework se base sur du PHP5 construit sur un modèle MVC et propose les fonctionnalités principales suivantes :

  • Auto-Installeur
  • Administration de l’application par IHM
  • Application souple paramétrée exclusivement en XML
  • Séparation distincte entre couche utilisateur et couche framework (classes préfixées)
  • Nativement multilangage (interface + contenu en base de données)
  • Dispatching et Url mapping
  • UrlRewrite propre et hautement flexible (rewrite mulilangue pour une même action)
  • Mapping objet relationnel, DAO et persistance
  • Système de caching
  • Loading récursif de ressources tierces
  • Autoloading de classes
  • Support de MySQL 5
  • Multi-database
  • Modèle MVC avec héritage et gestion des exceptions (output avec stacktrace en développement – logs en production)
  • Découpe hautement modulaire des pages à l’aide de contrôleurs statiques et de gabarits XSL
  • Framework JavaScript intégré implémentant Mootools nativement
  • Autogestion des erreurs Apache et suggestions natives de pages recherchées
  • Génération de modèles en synchronisation constante avec la base de données, génération d’actions et génération de back-offices clients en quelques clics
  • Application extensible avec système de plugins
  • Bon nombre de plugins natifs :
    • Date avec pattern multilangue
    • Rss 2
    • String avec traitement et validation axés sur les chaînes de caractères
    • Tracing avec Logging et StackTracing
    • Bo permettant listing, modification, ajout et suppression de modèles en quelques clics + support multilangue
    • XmlToolBox, gestion XML, DOM et xPATH
    • Email avec smtp distant, pièces jointes, contenu embarqué, html + text plain, copie, copie caché et templates xHtml extensibles
A noter que SillySmart ne nécessite pour fonctionner que de PHP5, l’url rewrite d’activé sur Apache et de la libxsl.

Ci-dessous l’arborescence de l’application :

SillySmart - Treeview

Et le diagramme de classe (volontairement simplifié) :

SillySmart - Class Diagram
Le projet atteint sa version 1.0 avec une application robuste et stable, un auto-installeur finalisé dans sa version PHP (Ajax à développer) et un Back-Office en cours de finition. SillySmart sera proposé en license libre (nous n'avons pas encore étudiée laquelle) et un site verra le jour d’ici la fin de l’année 2009 – début 2010 au plus tard. Il permettra une présentation du projet avec un accès à la documentation, téléchargement, forum, podcasts vidéos, démos, tutoriaux, Trac, road map, trunk svn, et bien d’autres encore.

Si vous êtes très impatients (on ne sait jamais !) ou que vous voulez tout simplement tester l’application ou mieux, nous rejoindre, écrivez-moi dans la partie contact, nous nous ferons un plaisir de vous répondre !

Screenshots

Prev Play Stop Next