Votre framework PHP

2015juin05

Vous être en pleine conception de votre nouvelle application révolutionnaire en PHP et vous vous demandez, la feuille blanche ou un framework existant ?

Peut être allez-vous trouver la réponse dans les lignes ci-dessous…

L’utilité d’un framework

Tout le monde ne parle que de ça, pour accélérer le développement de vos projets, utiliser un framework, que ce soit en php, javascript, perl, css ou tout autre langage, utilisez en un !

Un nombre impressionnant existe en php, parmi les plus connu : zend framework, symfony, cakephp, codeigniter pour ne citer qu’eux mais correspondent ils parfaitement à vos besoins, vont ils réellement vous simplifier la vie ?

Alors oui à première vue, tout est beau. De nombreux mécanisme, automatismes, conventions sont déjà en place. Une charte de nommage des méthodes, fonctions, classes est installé ce qui permet d’organiser plus rapidement votre travail. De même, si une tierce personne venait à devoir intervenir sur votre projet et si, par chance, elle connait le framework que vous utilisez, elle sera rapidement à l’aise et devra « se contenter » de comprendre votre application plutôt que de comprendre votre code !

Pourquoi utiliser un framework existant ?

Utiliser un framework existant vous permettra de vous appuyer rapidement sur un modèle et des normes éprouvés par de nombreux utilisateurs. En effet, en partant de zéro, vous serez confronté à de nombreuses interrogations et a de nombreux changements en cours de développement car vous ne pourrez pas penser a tout du premier coup.

Le coeur de votre application sera alors rapidement mis en place avec un système vous permettant de développer vos modules sous forme de plugins, une gestion de la validation des données soumises (par vos utilisateurs), un système d’authentification et de contrôle d’accès existant. De plus vous pourrez, si les fonctionnalités venaient à manquer, recourir à des plugins développés par d’autres membres de la communauté d’utilisateurs dudit framework. D’ailleurs en utilisant des plugins développés par autrui, prenez garde aux failles de sécurités et la compatibilité parfois aléatoire avec la version que vous utilisez.

Mais voilà, l’utilisation d’un framework a également ses limites surtout si une fonctionnalité du coeur du framework vous pose problème. La vous serez rapidement tenter de modifier les fichiers pour que celui-ci se comporte comme vous voulez ! (c’est vous le patron après tout ). Et c’est la que les ennuis commencent, vous commencerez par perdre instantanément la possibilité de le mettre à jour : adieux les mises à jours de sécurité, correction de bugs et autres améliorations. (à moins de noter dans un coin, les modifications que vous devez effectuer à chaque mise à jour). Sans oublier que vous ne connaissez peut être pas l’ensemble des fonctionnalités du framework, et qu’un petit arrangement pour une partie de votre code ne détruise alors une partie que vous n’avez pas encore utilisé !

Pourquoi développer son framework

Alors pour pallier à ces problèmes sans pour autant réinventer la roue à chacun de vos projets, il peut être intéressant que vous développiez votre propre outil qui vous suivra dans tous vos développements. Alors lancez-vous !

Pour vous faciliter la tâche, vous n’êtes pas obligé de fermer les yeux et de tout inventer. Commencez par regarder ce qui se fait en réalisant de petits projets avec des framework existants et étudier leur fonctionnant, les mécanismes qu’ils emploient notamment en matière de sauvegarde de données, de liaison entre vos différentes tables, d’automatisation en tout genre…

Jeter également un coup d’œil à la gestion des droits, au système de developpement des plugins. Si vous avez décider de développer VOTRE framework, il est très intéressant de le développer sous forme de plugins : un nouveau projet ? copiez ce dont vous avez besoin et c’est parti !

Suivant mon expérience, réaliser un système modulaire sous forme de plugins, (l’auto chargement des classes est votre allié), une gestion utilisateur sous forme de groupe (ou l’on gère les droits d’accès au niveau du groupe) est un plus surtout si votre système est amené à être utilisé par plusieurs dizaines d’utilisateurs.

N’oubliez pas également t de convenir d’une convention de nommage de vos classes, méthodes, champs mysql, clef primaires, étrangères.., cela vous permettra finalement de vous sentir pleinement à l’aise et de développement rapidement avec votre framework car c’est cela le but finalement : concevoir un outil qui vous ressemble, qui vous permet d’accélérer vos développements et que vous pouvez facilement modifier !

Parallèlement au plaisir de développer sa propre bibliothèque, faites également attention aux questions de sécurité. En effet, un projet mal sécurisé et c’est les problèmes assurés :

  • droit d’accès sur les entrées mysql
  • système de connexion / session
  • droit d’accès sur les fichiers uploadés
  • sécurité des données soumises par utilisateurs

Toutes ces questions doivent trouver leurs réponses avant même de commencer à développer ! Pour ma part j’ai opter pour la solution suivante :

  • une classe d’abstraction permettant de réaliser mes requêtes sur mon SGBD
    • la requête se compose automatiquement suivant l’utilisateur connecté (via le groupe auquel il appartient) afin d’ajouter les clauses « where » automatiquement.
    • un gain de temps considérable pour le développement puisque la question des droits se gère dans un seul fichier de configuration
  • les fichiers uploadés sont placés dans un répertoire protégé par htaccess
    • pour accéder à ceux ci via l’application, il y a obligation de passer par un script de téléchargement (qui gérera les droits…)
  • les données des formulaires sont filtrés puis protégés par la classe d’abstraction au SGBD

Ce compte rendu de mon sentiment à l’égard des framework ne concerne que moi, mais j’ai appris de part mon expérience qu’il est fréquemment plus facile de partir d’une feuille blanche et de construire ses propres briques lorsque l’on développe une application métier. En effet vous aurez affaire à de nombreuses contraintes non liées à l’informatique et les éléments pré-faits doivent convenir au plus grand nombre et votre application, elle, est unique !

Commentaires