Ceci est une brève présentation de mon framework, Kinetic. Ce sont des informations générales et vous n'y trouverez ni téléchargement, ni documentation. Un site web dédié verra probablement le jour lorsque j'estimerai avoir réalisé une version distribuable, ainsi qu'une documentation complète. D'ici là, s'il vous arrivait de devoir travailler avec mon framework, le mieux est encore de me contacter directement !

Kinetic, framework PHP5

Kinetic est une librairie de classes PHP5, accompagné d'une structure de base visant à mettre en place rapidement un site web fonctionnel et sécurisé, utilisant un système de pseudo frame. En addition de la librairie Kinetic, le framework fonctionne avec diverses librairies php comme par exemple Globulib, classes d'abstraction MySQL (initialement développée en collaboration avec Jérôme Wax) ou javascript comme prototype et scriptaculous.

Features

Pseudo Frame

Le système dit de "pseudo frames" permet de gérer l'intégralité d'un site dans un seul fichier d'interface, en changeant uniquement le contenu en fonction des pages demandées. Dans notre cas, un fichier gère les pages d'affichage, et un autre les pages de traitement ou d'appel ajax.

Ce système est basé sur un classe définissant les pages accessibles et les niveaux d'accès en fonction du système de login intégré nativement dans le framework et basé sur une comparaison de bits. De cette façon, les intrusions visant à inclure des fichiers externes sont exclues et le site protégé d'attaques basiques.

Implémentation proche du modèle MVC

Kinetic possède un système de templating autorisant la séparation du code php, de l'interface html et du contenu - les élements linguistiques étant nativement gérés via xml et permettant une internationalisation aisée d'un site web. Ces templates peuvent inclure des élements conditionnels et récursifs facilitant ainsi la dynamisation de l'affichage.

Chaque page est donc définie par trois fichiers : code php, template html, contenu xml. Les fichiers php et xml étant accessoires dans le cas d'une page d'affichage ; le template et le contenu sont eux facultatifs dans le cas d'une page de traitement.

Abstraction MySQL - Globulib

Le développement de Kinetic découle des premières implémentations d'Active Record au sein de la librairie Globulib. C'est donc tout naturellement qu'une version plus aboutie de cette librairie est présente, permettant une replication aisée des tables via des objets PHP, facilitant l'accès et les modifications de données grâce à un language de query épuré basé sur le langage MySQL.

Dans son utilisation basique, Globulib permet de travailler avec une base de donnée sans aucune écriture de requête.
Dans son utilisation avancée, elle permet la création d'objets complexes, sur une ou plusieurs tables et un choix de champs définis, comparables aux vues MySQL, mais présentant l'avantage de pouvoir être créés à la volée en fonction des besoins.

Les divers objets Query de Globulib permettent un travail direct sur les requêtes simplifiant grandement les créations de requêtes dynamiques, et autorisent également l'écriture de requêtes complètes en langage MySQL natif.

Protection contre les injections SQL

Kinetic comprend un objet permettant de définir un ensemble d'expressions régulières à utiliser pour vérifier la validité des entrées utilisateurs. Combinée à une vérification javascript du contenu des formulaires, la possibilité d'injecter du code SQL devient nulle, protégeant ainsi le site de façon efficace contre de nombreuses tentatives de hack.

Requirements

Kinetic a été développé et testé sur divers serveurs de type LAMP avec plus ou moins de succès, dépendant des settings Apache et PHP, dont nous parlerons dans les paragraphes suivants. Ce site a été développé en local sous Windows, avec EasyPHP 2.0. Quelques modifications peuvent s'avérer nécessaires pour le bon fonctionnement des path, principalement pour les templates, suivant la version du framework. Personne jusqu'ici ne s'est risqué à l'installer sur un serveur IIS.

De par son implementation, le fonctionnement d'un site basé sur Kinetic requiert un serveur permettant l'utilisation de mod_rewrite via un fichier .htaccess, sans quoi l'accès aux pages pourrait se trouver fortement compromis. Le framework peut fonctionner sans rewrite, mais cela implique un certain nombre de modifications des classes et des templates de base, ce que je déconseille à moins d'être moi même !

Kinetic est basé sur PHP5, il est impossible de le faire fonctionner sous une version antérieure, principalement à cause de l'utilisation des méthodes "magiques" de POO propres à PHP5. Le Safe Mode devrait être désactivé pour un meilleur fonctionnement. De même, Magic Quotes pourrait s'avérer gênant - même si jusque là rien n'appuie cette hypothèse. Enfin, register_global doit impérativement être désactivé, ce qui est le réglage par défaut de PHP5, mais demande à être vérifié en cas de problème.

Voilà qui conclut ce rapide tour d'horizon. Si vous êtes curieux, n'hésitez pas à me contacter pour que je vous envoie une version "as-is" tirée du svn.