Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2007, 17h27   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 2
Points : 1
Points : 1
Par défaut Quel framework pour le dével haut niveau et modulaire ?

Dans le cadre d'un projet personnel (mais d'une certaine ampleur), je suis à la recherche d'un framework PHP, de préférence gratuit et/ou open source qui, à la fois, permette de la modélisation de relativement haut niveau, et qui soit adapté pour la conception d'une application modulaire.

1.
Ce que j'entends par "modélisation d'un niveau relativement haut" c'est la chose suivante :
Imaginons que je veux manipuler des autorisations d'accès (à des fichiers) qui ont une certaine période de validité, je voudrais que ma classe "AccessAuthorization" ait (notamment) deux propriétés : "user" et "period", respectivement d'un type (dont les données proviennent généralement d'une table MySQL) implémentant l'interface "IUser" et d'un type "Period" (définie, par exemple, par date de début et date de fin).
J'aimerais pouvoir accéder à ces propriétés de cette manière :
Code :
$accessAuthorization->user
et
Code :
$accessAuthorization->period
J'aimerais ensuite les manipuler sans voir à m'inquiéter :
- de la classe exacte utilisée pour la propriété "user" (du moment qu'elle dérive de IUser)
- de la manière exacte dont est implémentée la classe "Period" (ça peut être une date de début et une date de fin, ou bien une date de début et une durée, etc. )
En particulier, je ne veux pas avoir à écrire la moindre instruction SQL, notamment pour créer les tables à l'installation de l'application (du moment que je déclare explicitement les propriétés que je souhaite voir dans chaque classe, bien entendu).

Je voudrais pouvoir faire des requêtes de haut niveau, du style :
Code :
1
2
$query=$this->period->isInside($period);   // création d'une requête
$accessAuthorizations=$this->get($query);  // exécution de la requête
Dans l'exemple ci-dessus, je demande la liste des autorisations dont la propriété "period" est comprise dans une $period donnée.
Cette écriture de haut niveau me permet de requêter sur des types complexes sans connaître leur implémentation ou leur représentation dans les tables SQL.
Il me suffit de connaître (ou de retrouver) les méthodes du style "isInside()" mises à disposition par celui qui a développé le type "Period", ce qui me paraît plus simple (notamment avec la future gestion des propriétés PHP __get() dans le bloc PHPDoc dans Eclipse PDT qui permettra de donner la liste des méthodes disponibles sous forme de code assist) et surtout plus sûr, mais tous les goûts sont dans la nature .


2.
Ce que j'entends par "adaptée pour une application modulaire" c'est, par exemple, la possibilité d'obtenir un objet représentant l'utilisateur courant en écrivant quelque chose du style :
Code :
1
2
3
4
5
6
7
8
interface IUserManager {
  /**
   * Get current user
   * @return IUser
   */
   function getCurrentUser();
}
$application->getModule('IUserManager')->getCurrentUser();
Je demande à l'application (ou équivalent) de me procurer un module actif implémentant l'interface "IUserManager", et je demande à ce dernier de me procurer l'utilisateur courant. Cette approche permet de remplacer le module gérant les utilisateurs sans impacter le reste du code.
Typiquement la méthode "getModule()" est fournie par le framework (qui dit framework adapté pour faire des applications modulaires, dit gestion du cycle de vie des modules même si, en PHP, la vie d'un objet est souvent assez brève... )

Ou encore la possibilité, lorsqu'on écrit un module qui a besoin de paramètres de configuration, de simplement lui faire implémenter une interface du genre
Code :
1
2
3
interface IParametrable {
   function getParameterDefinitions();
}
et un module d'administration, fourni par moi-même ou par un tiers, générerait automatiquement le panneau d'administration de mon module.


Ne trouvant pas rapidement un framework qui réponde à ces critères, j'ai déjà commencé à faire des choses par moi-même (en particulier les exemples que je donne ci-dessus sont pratiquement gérés, dans mon mini-framework personnel) mais, maintenant que je vois comment aborder le problème, j'aimerais me recaler sur quelque chose d'existant. Soit pour consolider ce que j'ai commencé à faire soit, carrément, pour basculer.
okamiPHP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 18h06   #2
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
Okay je te conseille sans hésiter Symfony, il ne fera tout ce que tu demandes mais il s'en approche, libre a toi de proposer un nouveau module
- Il a un ORM Propel (tes objets seront donc mappés)
- Tu devras apprendre YAML, toute la conf se fait par ce type de fichier.
Va sur leur site voir la présentation ou tu peux faire leur tutoriel "askeet" pour voir s'il te convient.

C'est un Framework tres complet.

http://www.symfony-project.com/
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 22h20   #3
Invité de passage
 
Inscription : novembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 2
Points : 1
Points : 1
Merci pour le tuyau !
okamiPHP est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h14.


 
 
 
 
Partenaires

Hébergement Web