Génération dynamique des attributs d'une classe

Génération dynamique des attributs d'une classe - Divers - Programmation

Marsh Posté le 15-08-2006 à 16:41:30    

Bonjour,
 
Dans le cadre d'un projet PHP, je suis confronté au problème suivant :  
Une classe Object est "liée" à une table "Object" dans la base de donnée.
Cette table peut être à tout moment modifiée (comprendre par la : Ajout/Suppression/Renommage d'une colonne) par l'administrateur.
Un script PHP doit récuperer la liste des champs, construire l'objet Object et finalement proposer plusieurs actions à l'utilisateur (inserer un objet, en supprimer un,...).
Rien de bien compliqué en procédural, parcontre comment faire pour construire l'objet étant donné que je ne connais pas à l'avance les attributs?
En PHP je vois 2 solutions :
Un array attributs, contenant tous les couplets attributs => valeur ... c'est la solution un peu "procedural like"
Le constructeur construisant à la volée les attributs avec une boucle $this->$nomAttribut = $valeur;
Dans mon script je serais plutot enclin à utiliser la 2ème solution.
 
Ma question est la suivante :  
Comment est-ce qu'on peut faire ça en Java/C++ ? Parceque je dois admettre que j'ai jamais du faire un truc "dynamique" de la sorte, et qu'a part utiliser la solution du tableau, je vois pas trop....
 
Merci pour vos lumières


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-08-2006 à 16:41:30   

Reply

Marsh Posté le 15-08-2006 à 16:50:29    

perso j'ai ete confronte a ce souci en C# et j'ai utilise la solution du tableau qui est a mon avis une bonne solution

Reply

Marsh Posté le 15-08-2006 à 17:02:29    

Oui, d'autant plus que ça enlève pas mal de problèmes par la suite. Notamment le fait que quand je dois appeller un constructeur de copie, je peux direct parser l'array plutot que de rechercher la liste des colonnes & co..
Parcontre ce qui me derrange c'est l'optique pas très "orienté objet" ..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 16-08-2006 à 10:08:29    

tiens, ça m'intéresse ça. Moi, aussi, je vais être confronté à ce pb prochainement en php. Sauf qu'en +, j'ai la notion d'arborescence : un objet est composé d'une arbo d'objets ayant chacun un nb d'attributs variable et dont le nom et le type varient... Moi aussi, je partais sur al notion de tableau d'objets...

Reply

Marsh Posté le 16-08-2006 à 10:30:43    

Citation :

En PHP je vois 2 solutions :
Un array attributs, contenant tous les couplets attributs => valeur ... c'est la solution un peu "procedural like"
Le constructeur construisant à la volée les attributs avec une boucle $this->$nomAttribut = $valeur;
Dans mon script je serais plutot enclin à utiliser la 2ème solution.


 
c'est bizarre mais je vois pas réellement la différence entre les 2 solutions.... :??:

Reply

Marsh Posté le 16-08-2006 à 10:36:47    

jbourdellon a écrit :

Citation :

En PHP je vois 2 solutions :
Un array attributs, contenant tous les couplets attributs => valeur ... c'est la solution un peu "procedural like"
Le constructeur construisant à la volée les attributs avec une boucle $this->$nomAttribut = $valeur;
Dans mon script je serais plutot enclin à utiliser la 2ème solution.


 
c'est bizarre mais je vois pas réellement la différence entre les 2 solutions.... :??:


 
si j'ai bien compris, la première solution, c'est une classe avec un seul attribut : un tableau contenant tous les attributs + leur valeur issus de la BD
La 2ième solution, c'est le constructeur qui récupère les attributs + valeurs de la BD et les crée à la volée.


Message édité par rufo le 16-08-2006 à 10:37:04
Reply

Marsh Posté le 16-08-2006 à 10:48:39    

ah oui c'est bien ce que j'avais compris, donc ou il y a un tableau avant la création et transmis au constructeur ou il y a un tableau comme attribut et on y insere les attributs.  
 
et le $this->$nomAttribut = $valeur ca marche ca ( je parle pour le nom de l'attribut ? , j'ai la flemme de tester)

Reply

Marsh Posté le 16-08-2006 à 14:21:41    

Oui ça marche.
Finalement je vais implémenter un "mix" des 2 :
le constructeur recuperera un array associatif (nomVariable=>valeur), et donc cet array sera un attribut de la classe. Deplus il y a certains attributs "de base" qui seront de toutes façons presents (genre pour un utilisateur, un login, un password et un userID), ceci seront definis eux aussi par le constructeur en passant l'array à la moulinette

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed