Roadmap - Feuille de route
-
Feuille de route jusqu’à la version 1.0.
Aujourd’hui le framework est opérationnel et utilisable pour vos projets – plusieurs projets professionnels l’utilisent déjà en environnement de production – mais il est encore en pleine construction et peut subir beaucoup de modifications.
Développer sous it.rocks aujourd’hui suppose de rester attentif à ses évolutions et à leur impact sur vos logiciels.
Version 0.1 (fait)
Coeur du framework :
- Autoloader path-to-class en principe “directory as a sub-module”,
- Script index point d’entrée unique,
- Fichier de configuration global, fichiers de données locales et mots de passes externalisés,
- Librarie de fonctions standard additionnelles aux fonctions de PHP,
- Librarie de plugins jQuery pour l’ergonomie : notamment build, xtarget, comme base de l’IHM Ajax transparent,
- Classes de Reflection avancées, intégrant annotations et règles de gestions standardisées,
- Architecture HMVCP : classes contrôleur standard,
- Vues standard, dont (entre-autres) listes configurables par l’utilisateur, affichage standard, formulaire,
- Fonctionnalités CRUD standardisées, y-compris IHM,
- Moteur de templates orienté validation W3C, lisibilité par programmeurs, designers et navigateurs web,
- Module de traduction intégré simple et contextualisé,
- Moteur AOP pour propriétés et méthodes avec compilation en cache,
- ORM orienté métier, simplicité d’écriture et disparition des notions abstraites de jointures, d’identifiants,
- Mysql Maintainer : maintenance automatique de la structure de base de données post-actif,
- Liens entre objets : Collection, Map, Classes liées,
- Constructeur d’objets à base de tableaux standardisés issus de formulaires HTML,
- Constructeur de requêtes à partir de chemins de données,
- Contrôle de capture d’erreurs, gestion des exceptions configurable,
- Observateurs de propriétés : @getter, @setter, liaisons implicites @link,
- Compilateurs extensibles pour la mise en cache de scripts modifiés,
- Cache invisible pour le débogueur (testé avec xdebug),
- Parseur de scripts PHP et enregistrement des dépendances,
- Moteur de tests unitaires léger,
- Classes construites,
- Plugins configurables, avec tissage AOP,
- Logger application et pour MySQL,
- Moteur d’import de données configurable,
- Plugin d’historisation des données,
- Script console point d’entrée pour l’exécution en ligne de commande,
- Début de RAD pour la personnalisation des vues simples et formulaires,
- Skin standard (modifiable et sélection de skin),
- Gestion des utilisateurs et de l’authentification standardisée,
- Plugin de Gestion des droits d’accès standardisée (optionnelle),
- API JSON universelle,
- Menu simple standard,
- Plugin Validator pour la validation des données à l’enregistrement des formulaires.
Fonctionnalités additionnelles :
- Import standard multi-formats de bases de données (s’appuie sur gnumeric),
- Traits métier standards : Has_Code, Has_Caption, Has_Name, Date_Logged, etc.
- Objets métier standards : compteur, code,
- Objets métier standard pour carnet d’adresses,
- Objets métier standard pour émission et archivage d’emails,
- Plugin de contrôle de droit d’accès par URI,
- Plugin Environment pour logiciels à sauts d’environnements,
- Proxy HTTP pour l’intégration dans des applications tierces,
- Plugin de gestion de duplication d’objets métier,
- Plugin SSO pour accès à applications tierces compatibles,
- Liens avec Mattermost.
Version 0.2 (fait)
Vous pouvez suivre les avancées sur le ChangeLog – Journal des modifications.
- Propriétés de classes abstraites
- RAD Formats d’impression
- Tests unitaires avec PHPUnit
Objectifs version 0.3
- Bogues moins urgents
- #69811 Compilateur AOP implémente des boucles infinies lors d’aroundMethod()
- #71066 (fait) Anti-crash de liste
- #70840 (fait) @component + @integrated block => erreur fatale
- #69911 Double traduction et traduction de valeurs de propriétés qui ne devraient pas être traduites
- #51201 (fait) Tables de liens multiples créées incomplètes
- #48712 Clic droit ouvrir dans une nouvelle fenêtre sur les liens xtarget de formulaires
- #48702 (fait) Popup création de bouton d’action sans focus
- Améliorations moins urgentes
- #50202 Fonction de substitution d’utilisateur
- #65771 Getters avec paramètres optionnels
- #70031 Droits d’accès : autoriser le fichier .yaml à être dans un sous-dossier
- #70942 Ajout implicite du droit json
- #62951 #9182 (fait) Dao : scan de validation / correction de la structure de données. Inclurant suppression des id de tables _links si présents par erreur. Vérifier aussi qu’on ne crée pas des champs id par erreur.
- #54661 (fait) Point sur les annotations d’aide au stockage
- #50951 (fait) #45042 (fait) #40571 (fait) Amélioration de la compilation de cache des classes liées
- #48722 (fait) Amélioration du chargement des formulaires popup
- #44432 Listes : ne pas afficher en double les lignes dans cas particuliers le justifiant
- Améliorations à étudier
- #69031 (fait) Htmlentities des données dans le moteur de templates html par défaut, à étudier
- #68681 (abandonné) Librairie de diff de texte pour les tests unitaires
- #68631 (abandonné) Librairie multibytes pour strIsCapitals()
- Fonctionnalités principales
- RAD listes
- Gestion de l’appartenance d’une liste sauvegardée : privé, à un ou plusieurs groupe d’utilisateurs, à un ou plusieurs utilisateurs, publique
- Possibilité de demander la sortie au format de son choix des données d’une liste sauvegardée : ponctuelle et planifiée (par exemple quotidiennement)
- Sortie de liste sauvegardée : ajout format possible “table de base de données” pour table de base stats (génération ponctuelle ou planification quotidienne / horaire)
- Génération des tables de stats : depuis serveur de stats puis copie “dump” pour une génération plus rapide
- RAD listes
Objectifs versions 0.4 à 0.8
- Héritage de valeurs de propriétés
- Mécanisme standardisé d’héritage de valeurs à l’écriture, en mode différé pour les lots importants de données
- Logiciels personnalisables -> RAD partie documents
- Création de nouveaux “documents” = classes métier client
- Ajout / suppression de champs dans les classes métier client
- Modification des attributs = annotations des classes métier client
- Création de modules métier pour étendre les classes métier client ou hérités
- Ajout / suppression de champs dans modules métier (idem classes métier)
- Extension des classes existantes par ajout de modules métier déjà existants ou ajoutés (assemblage)
- RAD Champs et boutons
- RAD formulaires
- RAD formulaires : Gestion de processus
- RAD partie fonctionnalités : personnalisation des menus
- Glisser une liste personnalisée / un formulaire personnalisé (“nouveau”) vers un menu
- Supprimer un item de menu
- Créer / supprimer un bloc de menu
- Fonctionnalité standard “search”
- Peut remplacer les listes comme fonctionnalité par défaut
- Critères de recherche dans un formulaire
- #47302 Editeur de conditions avancé (permet les regroupements de conditions et/ou et sous-conditions, etc.)
- Intègre le choix des colonnes à afficher
- Sauvegarde ici en RAD, avec possibilité de récupérer depuis les listes RAD sauvegardées
- Depuis liste : accès aux listes RAD de recherches
- Valide une recherche => affiche la liste
- Depuis la liste, possibilité d’aller à l’écran de recherche avancée
- RAD du “search” : on doit pouvoir ajouter / modifier les champs de recherche comme on veut
Les choses non bloquantes aujourd’hui, attendues avant la 1.0 :
- Sélection de propriétés
- Rajouter les relations tacites (par exemple commandes depuis un client, même s’il n’y a pas de propriété $orders dans la classe Client)
- Validation de ces relations dans les listes
- Utilisation de ces relations dans le RAD formats d’impressions
- #71078 “AOP sur les pages HTML” : php-query
- Remplacer dans le code tous les Builder::create(Class_Name::class) par des new Class_Name(), ne les remettre qu’en cache sur compilation des new Class_Name() où c’est nécessaire (et du coup partout où c’est nécessaire).
- RAD Fonctionnalités :
- Tous les plugins du fichier de configuration doivent être configurables en interactif
- On doit pouvoir activer / désactiver des fonctionnalités
- Packages : une fonctionnalité peut donner lieu à l’ajout de traits + activation de plugins, les install / désinstall doivent être automatiques
- Paramétrage de l’application : ajout de dépendances (applications I.T. Rocks)
- Ajout de dépendances Bower / Composer