developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#1169 closed new feature (invalid)

Jdao::Get($selector,$mask,$graft) to get only what i need and what another modules need

Reported by: flav Owned by:
Priority: normal Milestone:
Component: jelix Version: trunk
Severity: normal Keywords: jdao greffe graft masque mask
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version:

Description

Il pourrait être intéressant d'ajouter deux paramètres facultatifs masque et greffe.

Le masque (un tableau) permettrait de récupérer exactement ce que l'on souhaite pour la compilation de la dao. L'avantage serait de pouvoir activer/désactiver certaines propriétés. Le masque pourrait ensuite être utilisé dans le squelette pour afficher exactement ce que l'on souhaite afficher.

La greffe (un tableau) quant à elle pourrait permettre d'écrire des modules sans avoir à définir de DAO. Ces modules seraient plus facilement exportables vers d'autres applications. La greffe, devant être définie par ce type de module, serait simplement un ensemble de propriétés. La seule chose qu'il resterait à faire c'est créer les nouvelles colonnes aux tables devant hériter des nouvelles propriétés.

On aurait alors deux types de propriétés. Les propriétés inhérentes à l'objet (celle du DAO, propriétés "originales"), et les propriétés hérités des modules (listées dans la greffe). En attribuant à l'objet d'un DAO un type, et en jouant avec des events, il deviendrait possible de faire traiter automatiquement les propriétés héritées de l'objet par les modules offrant ces nouvelles propriétés.

Change History (5)

comment:1 Changed 10 years ago by flav

Bien entendu, dans ce cas, il serait logique que la greffe puisse aussi transmettre des foreigntable et des optionforeigntable pour les faire ajouter par le parseur dans le tableau datasources, idem pour les méthodes de la factory.

comment:2 Changed 10 years ago by flav

  • Resolution set to invalid
  • Status changed from new to closed

Désolé. Mais tout bien réfléchi, je vais fermer ce ticket.

En ce qui concerne les masques, je devais être assez fatigué pour proposer un truc aussi absurde. Aucun intérêt en terme de performance puisque l'objet jDbResultSet est un itérateur. Nulle besoin de masquer quoi que ce soit, puisque n'est calculé que ce qui est demandé.

D'autre part, plutôt qu'un système de greffe, il serait bien plus logique d'envoyer le contenu de datasources aux modules. Ces modules fabriqueraient des DAOs à l'aide d'un "squelette de DAO". Ce "squelette" serait un XML similaire à un DAO, à ceci près qu'il ne contiendrais pas de primarytable, puisque cette donnée doit être transmise à partir d'un autre DAO. Un genre de DAO "sans tête". Destiné à pouvoir "prendre plusieurs visages", c'est à dire à utiliser le datasource d'un autre DAO. J'ouvrirais un sujet sur le forum afin de discuter de la pertinence de cette proposition plus en profondeur.

Enfin, il semblerai que le développement de jDao soit freiné par la volonté "d'utiliser un véritable ORM". Je ne suis pas en capacité d'exprimer un avis sur la question. Mes connaissances dans ce domaines sont pour l'instant assez limitées.

comment:3 Changed 10 years ago by laurentj

  • Resolution invalid deleted
  • Status changed from closed to reopened

pour les masques effectivement...

Pour les greffes, usine à gaz. Ce que tu veux faire en gros, si j'ai bien compris, c'est tout simplement de l'héritage objet. Et ça tombe bien, un dao c'est un objet. Ne pas oublier non plus qu'il est possible de redéfinir un dao (sans toucher à l'original) via le mécanisme d'overload de jelix.

comment:4 Changed 10 years ago by laurentj

  • Resolution set to invalid
  • Status changed from reopened to closed

comment:5 Changed 10 years ago by flav

c'est tout simplement de l'héritage objet.

Oui c'est ça! (Maintenant que tu le dis!)... :o)

Merci.

Note: See TracTickets for help on using tickets.