Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-12-2008 17:16:47

nenex
Nouveau membre
Date d'inscription: 17-12-2008
Messages: 1

[Zend_Db][1.7.1] Zend_Db_Table et singleton

Bonjour tout le monde.

Je débute avec ZF, et je suis surpris de voir que Zend_Db_Table ne semble pas profiter de singleton.
Voici un exemple:

Code:

$TClient = new Ma_Db_TClient();
$client1 = $TClient->find(1)->current();
$client2 = $TClient->find(1)->current();

echo $client1->nom; // 'Durand'
$client1->nom = 'Truite';
echo $client1->nom; // 'Truite'
echo $client2->nom; // 'Durand'

Je me retrouve donc avec 2 variables qui sont censées pointer vers le même objet, mais qui sont en fait 2 objets indépendants.

Avant de passer à ZF, j'avais mis au point un ensemble de class me permettant de charger l'équivalent d'un Zend_Db_Table_Row dans une variable static pour utiliser singleton, et ainsi pouvoir avoir des variables contenant un pointeur vers un unique objet toujours identique.
A ça j'utilisais APC pour stocker chacune de ces lignes en mémoire et pouvoir éviter une requête supplémentaire.

J'ai voulu voir si j'arrivais à surchager les class de ZF pour obtenir le même résultat, mais je n'ai pas assez d'expérience avec ZF pour y arriver proprement.

Alors voilà mes questions :
* est ce que j'ai tout faux dès le départ, et qu'en fait ZF sait très bien gérer tout ça et je dois apprendre à lire entre les lignes ?
* quelqu'un a t il déjà réussi à mettre en place ce système, et avec APC ?
* je crois avoir réussi à étendre Zend_Db_Table_Rowset et Zend_Db_Table_Row pour fonctionner avec un simple ->find(#), mais pas quand il y a plusieurs clés primaires (ou alors il fait les réquêtes, mais ensuite je ne les utilisent pas au profit du tableau static, et dans ce cas pas de gain de performances et APC devient inutile)
* et enfin bonus : évidemment, ce système doit fonctionner avec une requête de type "select *" n'impliquant que cette table, retournant uniquement la clé primaire des lignes concernées, et pour chacune d'elle, soit elle existe déjà dans le singleton, soit il faut alors faire un équivalent de ->find(#)

J'espère que mon explication n'est pas trop compliquée (ou trop bête !) et que quelqu'un s'est déjà posé les mêmes questions ...

PS: oui, je ne me réfère dans ce cas là qu'à des tables simples, avec une seule clé primaire

Dernière modification par nenex (18-12-2008 10:52:21)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages