Aller au contenu

Recommended Posts

Bonjour, je rédige ce sujet suite à lancée par Soulalex.

 

L'idée serait de faire un framework PHP réalisé par les membres de Melinyel.

Ce sujet a pour but de définir clairement nos objectifs et les participants. Si vous voulez participer au développement de ce framework, même un petit peu, précisez-le à la suite de ce message :

 

Caractéristiques (à débattre) :

 

Fonctionnalités recherchées (n'hésitez surtout pas à en proposer) :

  • Interaction très simplifiée mais sécurisées avec MySQL.
  • Gestion des fichiers (upload / download / rename / déplacements)
  • Un ORM
  • Une gestion dynamique des URLs
  • Gérer les appels RESTful
  • Évidement adopter une construction MVC
  • Pouvoir configurer et gérer différents environnements (test, dev, beta, prod, ....)
  • Gérer et capturer les erreurs et exceptions côté serveur (librairie de type Whoops)
  • Adopter une construction permettant l'exécution de routines évènementielles
  • Un système de profiling et de benchmarking
  • Système avancé de gestion de mailing (?)
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Ce que je suggère pour ma part, comme fonctions :

  • Interaction très simplifiée mais sécurisées avec MySQL.
  • Gestion des fichiers (upload / download / rename / déplacements)

Donnez votre avis sur le projet, les fonctionnalités, ce que vous voulez voir et si vous n'êtes pas d'accord avec une fonction proposée faites-le savoir. :)

Lien vers le commentaire
Partager sur d’autres sites

Alors moi je vais proposer pas mal de fonctionnalités de fond :

  • Un ORM
  • Une gestion dynamique des URLs
  • Gérer les appels RESTful
  • Évidement adopter une construction MVC
  • Pouvoir configurer et gérer différents environnements (test, dev, beta, prod, ....)
  • Gérer et capturer les erreurs et exceptions côté serveur (librairie de type Whoops)
  • Adopter une construction permettant l'exécution de routines évènementielles
  • Un système de profiling et de benchmarking

Et si je vous dit que tout ça, j'ai déjà en stock ?

Lien vers le commentaire
Partager sur d’autres sites

Ah, là ça peut être clairement intéressant si tu as déjà tout ça ! :D
Tu vas encore nous faire culpabiliser, avec ta participation, héhé.
J'ai ajouté une fonctionnalité mailing, l'idée serait de voir si on peut interagir facilement avec un serveur mail pour récuper/lister/envoyer des mails (c'est une suggestion).

Lien vers le commentaire
Partager sur d’autres sites

Avant de commencer, il faut qu'on parte sur de bonnes bases. Pour cela il nous faut organiser correctement nos dossiers pour qu'on puisse s'y retrouver facilement. Je propose quelque chose comme ça (à compléter) :

  • System : Contient tous les scripts et bibliothèques pour que le framework fonctionne correctement. L'utilisateur n'a pas besoin de toucher à ce dossier.
  • Sources : Contient tous les scripts créés par l'utilisateur : ses modules, ses entitiés, ....
  • Web : Contient les ressources du site web (css, police d'écriture, images, ...).
  • Config : Contient les configurations du framework, l'utilisateur peut les modifier.

 

Voila ma proposition n'hésitez pas à votre tour d'en émettre une.

Lien vers le commentaire
Partager sur d’autres sites

Utilisation d'une librairie externe pour la partie CSS / HTML ? Du genre Bootstrap ou Foundation. 

 

Il me semble que Soulalex voulait justement faire tout en partant de 0. Après c'est à débattre afin de savoir si la majorité préfère avec ou sans Bootstrap. :)

 

 

 

Avant de commencer, il faut qu'on parte sur de bonnes bases. Pour cela il nous faut organiser correctement nos dossiers pour qu'on puisse s'y retrouver facilement. Je propose quelque chose comme ça (à compléter) :

  • System : Contient tous les scripts et bibliothèques pour que le framework fonctionne correctement. L'utilisateur n'a pas besoin de toucher à ce dossier.
  • Sources : Contient tous les scripts créés par l'utilisateur : ses modules, ses entitiés, ....
  • Web : Contient les ressources du site web (css, police d'écriture, images, ...).
  • Config : Contient les configurations du framework, l'utilisateur peut les modifier.

 

Voila ma proposition n'hésitez pas à votre tour d'en émettre une.

 

Pour ma part, cette organisation me convient, à voir si d'autres y trouvent quelque chose à redire. :)

Lien vers le commentaire
Partager sur d’autres sites

Avant de commencer, il faut qu'on parte sur de bonnes bases. Pour cela il nous faut organiser correctement nos dossiers pour qu'on puisse s'y retrouver facilement. Je propose quelque chose comme ça (à compléter) :

  • System : Contient tous les scripts et bibliothèques pour que le framework fonctionne correctement. L'utilisateur n'a pas besoin de toucher à ce dossier.
  • Sources : Contient tous les scripts créés par l'utilisateur : ses modules, ses entitiés, ....
  • Web : Contient les ressources du site web (css, police d'écriture, images, ...).
  • Config : Contient les configurations du framework, l'utilisateur peut les modifier.

 

Voila ma proposition n'hésitez pas à votre tour d'en émettre une.

 

Ca me convient et même ca ressemble beaucoup à mon organisation personnelle :

  • app : tout le code applicatif (modèles, controllers, vues, helpers, ...)
  • config : les fichiers de configurations
  • system : le code du framework (Router, ORM, ...)
  • webroot : la racine du virtual host avec toutes les ressources (css, js, images, ...)
Lien vers le commentaire
Partager sur d’autres sites

Ce qu'on peut faire c'est un système d'application (pour mieux organiser notre site. Par exemple, on va avoir le frontend et le backend). Ce qui donne quelque chose comme ça si on reprend arborescence :

  • Sources
    • Applications : Une application sera une partie du site
      • Modules : Contient les contrôleurs et les vues.
      • Ressources : Contient les configurations de l'application et d'autres ressources comme un layout particulier.
    • Models : Entités de la base de données et managers.
  • Config
  • System
    • Core
    • Libraries
  • Web

 

Bon voilà je trouve que c'est un peu bancal donc n'hésitez pas à reproposer des idées.

 

 

 

La gestion des formulaires avancés serait la bienvenue, non ? :)

La gestion des formulaires viendra plus tard :)

Lien vers le commentaire
Partager sur d’autres sites

Je propose aussi une arborescence complète, a commenter :

  • app : dossier des applications
    • controllers : Ensemble des controllers
      • Un dossier par namespace contenant chacun les controllers
    • helpers : Ensemble des fichiers avec des fonctions d'aides
    • hooks : Ensemble des fonctions à appel évènementiel (par ex: un truc à faire avant chaque appel de page)
    • libraries : Toutes les ressources et librairies externes
    • models : Tous les modèles utilisateurs + ceux pré-intégré
      • mapping : les fichiers de mapping BDD des modèles (gestion de l'ORM)
    • views : Contient toutes les vues
      • Plus un dossier par controller qui contient les vues du controller
      • errors : Contient tous les affichages d'erreurs (la page pour un 404, une erreur 500, ...)
      • layouts : Contient tous les layouts
  • config : Tous les fichiers de configuration (BDD, site, environnement)
  • system : la base du framework
    • core : le noyau et toute la gestion de base
    • helpers : toutes les fonctionnalités annexes de bas niveau (gestion du cache, des sessions, des inputs, des cookies, ...)
    • librairies : Toutes les librairies internes (mais facultatives) au noyau (par ex: gestion des erreurs, benchmarking)
    • orm : ben... l'ORM
  • webroot : la racine du site
    • Les sous dossiers en fonctions des besoins (css, js, images, ...)

 

Dites-moi ce que vous en pensez !

Lien vers le commentaire
Partager sur d’autres sites

S'ils veulent participer au projet, il faudra qu'ils s'inscrivent sur le forum pour suivre l'actualité du développement du framework. Après on empêche personne de proposer des scripts.

 

Absolument :)

C'est encore une ébauche, il faut attendre de voir qui est vraiment disposé à faire ce framework. Tu connais des personnes qui ne sont pas sur Melinyel mais qui sont intéressées par ce projet, Eloha ?

Lien vers le commentaire
Partager sur d’autres sites

Voici un diagramme UML du framework dans les grandes lignes.

  • La classe Kernel gère tout dans le framework.
  • La classe Application gère l'application.
  • La classe Controller gère les contrôleurs.
  • La classe Page gère la page (génération, ...).
  • La classe Router gère les routes.

post-5-0-43130000-1406651778_thumb.png

Lien vers le commentaire
Partager sur d’autres sites

Voici un diagramme UML du framework dans les grandes lignes.

  • La classe Kernel gère tout dans le framework.
  • La classe Application gère l'application.
  • La classe Controller gère les contrôleurs.
  • La classe Page gère la page (génération, ...).
  • La classe Router gère les routes.

attachicon.gifdiag_uml_meliframework_rev1.PNG

C'est pas un peu tôt pour commencer à faire de l'UML, alors qu'on ne sait même pas ce qu'il va devoir faire ce framework ni comment ?

Lien vers le commentaire
Partager sur d’autres sites

Justement non, autant faire étape par étape pour que chacune soit bien réalisée. Donc la première étape sera de réaliser toute la base du site (les fonctions vraiment de base) ainsi que la gestion des applications, des contrôleurs, de la page, ...

 

Si on commence à intégrer beaucoup de choses à la fois on ne va pas s'en sortir. On va essayer de faire quelque chose d'assez modulable pour qu'on puisse intégrer justement par la suite tous les composants dont on aura besoin (session, gestion des DB, ...).

 

Et l'avantage de faire un diagramme c'est justement de définir comment va procéder le site pour générer demandée (mais j'avoue qu'il est très mal fait ^^). Après je ne vois pas trop ce que tu veux dire par "ce qu'il devra faire", comme tous les framework il devra offrir à l'utilisateur de nombreux outils pour concevoir son site web et ce le plus simplement possible.

Lien vers le commentaire
Partager sur d’autres sites

C'est très bien de faire un diagramme, et il faudra en faire certainement plus d'un... mais je vais expliquer un peu plus.

 

On est entrain de concevoir quelque chose de complexe dont on ne sait pas du tout comment il devra fonctionner. Et cela, au point que l'architecture de base puisse être différente.

Quelques exemple, le framework est construit de manière unifié, donc tous les modules de base (Router, ORM, Parser, Controllers) peuvent être directement intégré. Ou alors, il sera construit de manière entièrement modulaire, dans ce cas l'architecture devra pouvoir se séparer de certains éléments.

 

Donc pour ce qui est de formaliser des concepts, je pense que c'est très prématuré, vu que ces concepts non pas été définis.

 

Si on veux faire un framework qui sert a quelque chose et soit facilement utilisable pas un maximum de développeurs, il ne suffit pas de se dire qu'on va concevoir un truc qui va générer des pages et pour le reste on rajoutera des modules plus ou moins autour. C'est un tout à concevoir.

 

Pour cela, en principe, on part d'un ou plusieurs besoins et on va vers un ou plusieurs objectifs clairement définis.

 

 

 

Je vais illustrer tout ça par quelques propositions d'objectifs, de questionnements :

  • Offrir une architecture permettant d'intégrer facilement des modules externes (cela IMPOSE de prévoir que des modules inconnus seront intégré)
  • Ou offrir un ensemble de fonctionnalités de base de création et de gestion de site (dans ce cas, les modules peuvent être directement rattaché et intégré)
  • On peut également imaginer un mix des deux
  • Est-ce que la gestion du frontend est prévu à la base (intégration directe d'un système de layout, de vues, templates, de cache, ...) ou est-il considéré comme un module extérieur ?
  • L'ORM est-il intégré de base ? ou le dev pourra choisir celui qui lui convient le mieux ? On développement le notre ? Selon quelles bases ? ...
  • Dans quelle mesure le framework sera configurable ? (cela impose de prévoir ou non des modules de gestions de confiugration plus ou moins avancés)
  • Du côté sécurité, comment le framework devra réagir aux multiples attaques (appel de code direct, URL mal formaté, flood, bruteforce, injection, ...) ?

 

D’expérience, sur un projet de cet envergure, plus on planifie de chose AVANT de concevoir la moindre chose de technique, mieux en s'en sortira après. Le principal ennemi d'un projet de dev de grande taille, avec de multiple participant, c'est les rajouts en court de route qui sont fait "comme on peut". On gagnera beaucoup de temps de développement en se cassant la tête maintenant à prévoir un maximum de possibilités.

 

Pour résumé ce que je pense du diagramme, c'est que oui, il est logique, oui il fonctionne, mais est-ce que c'est de ca qu'on a besoin ? Si oui, c'est pour répondre à quel besoin, sinon il est inutile voire pire... faux.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Pour ma part, je n'aurais pas le temps de m'impliquer dans ce projet.
Est-ce que vous arriverez à prendre en main ce projet de manière autonome (Soulalex / Anaeria) ? :)
S'il vous faut quoique ce soit, n'hésitez pas.

Lien vers le commentaire
Partager sur d’autres sites

 Share

×
×
  • Créer...