# Jelix

Jelix est un cadriciel (framework) pour PHP5 open source, MVC, permettant le développement de tout type d'application.

## Historique

Jelix est un framework pour PHP, créé fin 2005 par un Français, Laurent Jouanneau. Le site web du projet ouvrit officiellement ses portes le 1er janvier 2006.
À l'origine, le projet fut un fork du framework Copix (dont Laurent Jouanneau était l'un des principaux développeurs), mais très rapidement le cœur fut totalement réécrit, avec une autre approche MVC, et maintenant, seules quelques portions de Copix subsistent depuis la version 1.0 beta.
Depuis sa création, le framework est utilisé par de nombreux sites web, dont l'une des plus grosses plates-formes de blogs françaises.
Quelques articles de presse ont été publiés, notamment dans la revue Linux-DVD.
Le projet Jelix n'est associé à aucune société particulière. Il est développé par une communauté de développeurs professionnels venant d'horizons divers et pour la plupart francophones.

## Fonctionnalités

Jelix est basé sur le design pattern MVC et DAO qui permet une séparation logique du code. Il est distribué sous la licence LGPL.
* Un ensemble d'API prenant en charge : accès aux données, moteur de templates, générateurs de contenus, générateur de formulaires, CRUD générique, authentification, gestion de droits, etc.
* Une structure modulaire et une organisation des fichiers rigoureuse.
* un respect du modèle MVC pour un découpage en couche du projet.
Quelques originalités :
* Garantie sur les échanges de données : le framework fait le maximum pour que la réponse attendue par le client (navigateur ou autre) soit toujours dans le format attendu, même s'il y a des erreurs. Exemple : si le client attend une réponse en XMLRPC (à la suite d'une requête en XMLRPC) et qu'une erreur survient, il ne recevra pas une page HTML en guise de message d'erreur.
* Les vues sont encapsulées dans des objets "réponses". Les vues ne sont pas de simples templates. Il y a des objets réponses pour chaque type de réponse : page HTML, redirection, page XUL, fichier XML, fichier binaire, SOAP, XMLRPC, JSONRPC, etc. Chaque type d'objet réponse prend en charge toutes les spécificités du format de la réponse renvoyée et les en-têtes HTTP associés, facilitant le développement des contrôleurs. Et il est possible bien sûr de développer ses propres objets réponses, notamment pour spécifier certaines caractéristiques de toutes les pages web d'un site par exemple (template principal, feuille de styles...).
* Jelix permet de développer des modules. Un module est un ensemble de fichiers concernant un domaine fonctionnel précis (exemple : un module "news" pour afficher et gérer des news). Les modules peuvent fonctionner indépendamment les uns des autres. Il est possible aussi pour le développeur de redéfinir certains fichiers d'un module tiers sans toucher aux fichiers originaux, permettant des mises à jour plus simples.
* Jelix propose un système de formulaire puissant et modifiable dynamiquement, jForms, qui respecte le modèle MVC.
* Un composant, jDao, associé à jDb, la couche d'abstraction de base de données, permet de faire du "mapping" relationnel objet. Il est simple à utiliser, mais n'est cependant pas aussi puissant que d'autres ORM (propel, doctrine, etc.)
* un moteur d'URL permet de déclarer des URL associés à des contrôleurs précis, mais aussi de générer automatiquement les URL en donnant uniquement le nom du contrôleur et ses paramètres. Cela évite d'avoir des URL en dur dans le code et les templates, permettant alors une modification plus souple de l'organisation des URL du site.
* Un contrôleur générique est disponible pour faire du CRUD, c'est-à-dire qu'il comporte toutes les actions pour lister une table, éditer ou supprimer des enregistrements. Il suffit juste de lui indiquer un objet jDao et un fichier jForms. Il est bien sûr hautement paramétrable.
* un installeur complet pour gérer son application de A à Z, allant de l'installation des tables à leur mise à jour en passant par la copie des fichiers nécessaire aux modules.
* un système de wizard pour enchainer l'installation des modules de son choix au sein de sa propre application
* des modules pour réaliser une interface d'administration sont livrés.
* La plupart des composants de Jelix ont un système de "plugins", permettant de modifier ou d'étendre leurs comportements, selon les besoins.
* Possibilité de développer des applications en ligne de commandes basées sur Jelix.
* Des scripts en ligne de commandes permet de créer rapidement une application, générer des fichiers pour l'application, et de faire d'autres opérations utiles pour le développement.
* Les manuels et tutoriels sont disponibles à la fois en français et en anglais.
Jelix possède aussi de nombreuses autres fonctionnalités que l'on retrouve dans d'autres frameworks PHP.

## État du projet

* La version 1.7.8 est sortie le 30 juillet 2021
* La version 1.7 est sortie le 9 septembre 2019
* La version 1.6 est sortie le 20 juin 2014
* La version 1.5 est sortie le 20 février 2013
* La version 1.4 est sortie en août 2012
* La version 1.3 est sortie en octobre 2011
* La version 1.2 est sortie pour noël 2010
* La version 1.1 est sortie en février 2009
* La première version stable 1.0 est sortie en janvier 2008
Des versions correctives de ces quatre branches sortent régulièrement.
* Dernière en date pour la branche 1.7 (changelog) sortie le 30 juillet 2021
* Dernière en date pour la branche 1.6 (changelog) sortie le 24 novembre 2014
* Dernière en date pour la branche 1.5 (n'est plus maintenue) : 1.5.8 sortie le 4 janvier 2017
* Dernière en date pour la branche 1.4 (n'est plus maintenue) : 1.4.8 sortie le 26 octobre 2015
* Dernière en date pour la branche 1.3 (n'est plus maintenue) : 1.3.9 sortie le 23 septembre 2014
* Dernière en date pour la branche 1.2 (n'est plus maintenue) : 1.2.13 sortie le 19 septembre 2013
* Dernière en date pour la branche 1.1 (n'est plus maintenue) : 1.1.12 sortie le 22 mars 2012
* Dernière en date pour la branche 1.0 (n'est plus maintenue) : 1.0.13 sortie le 25 septembre 2010
Liste des nouveautés apportées par la branche 1.7 Nouveautés apportées par la version 1.7
* Intégration avec Composer
* Nouveau répertoire (/app)
* Refonte du moteur d'URL
* Amélioration de l'installateur
* Nouveau Système d'assets : webassets
* Scripts en ligne de commande
* Jelix Scripts
* jDb et jDao: améliorations
* jForms: mises à jour
* Changements d'API dans le coeur du framework
* ... voir le changelog
Fin de vie : décembre 2023
Compatibilité PHP minimum : 5.6