06-17-2009, 09:01 AM
coucou
voilà, je me pose peut être un problème qui n en est pas un mais paranoia d'un ancien développeur C oblige, je me pose des questions sur le comportement d'unset dans des cas un peu plus lourd que la simple variable
pour éviter x requêtes unitaires, je charge dans plusieurs tableaux des "objets" de l'inventaire d'une liste de personnages. Chaque tableau correspond à un type d'accès particulier ( qu'y a t il dans ce sac ? quels sont les objets de ce type ?) que j'utilise grâce à des "foreach" (pour obtenir la liste suivant des filtres) et des "isset" (est ce que l'objet existe)
je crée donc pour un enregistrement en base un objet (new Obj) que j'attribue à deux ou trois tableaux
tout cela c'est très bien mais je développe les fonctions de suppression et là quelques inquiétudes, soucis, questions
autant je construis sans problème la requête SQL qui nettoie en base, autant j'aimerais avoir un nettoyage "élégant" de mes tableaux
prenons le cas de la suppression d'un personnage. Le personnage est identifié par $res['obj_ext_poss_id']
ce que j'aimerais faire c'est, par exemple un
qui vide de la mémoire l'ensemble des éléments :
- à savoir toutes les cas de $this->_byType[ $res['obj_ext_poss_id'] ], mais ça je pense que oui
- mais aussi les objets "obj" associés (et là je ne sais pas trop)
- mais aussi l'ensemble des cases du tableau $this->_possessionsId[$res['obj_id']] qui correspondent à des objets de ce propriétaire
- etc...
là je suis dans le cas d'un personnage complet mais j'aimerais aussi pouvoir
supprimer toutes les possessions d'un personnage d'un certain type (unset($this->_byType[ $res['obj_ext_poss_id'] ][$res['obj_ext_type_id'])
ou supprimer toutes les possessions d'un personnage contenu dans un sac
(unset($this->_byBag[ $res['obj_ext_poss_id'] ][ $res['obj_ext_conteneur_id' ] ])
voyez ce que je veut dire ?
cela marche peut être complètement, naturellement mais j'ai un doute.
je serais en C je bouclerais sur tous les éléments unitaires du plus fin au plus gros, pour tout nettoyer, mais en php est ce utile ou arrive t il à se débrouiller ?
merci de votre aide
voilà, je me pose peut être un problème qui n en est pas un mais paranoia d'un ancien développeur C oblige, je me pose des questions sur le comportement d'unset dans des cas un peu plus lourd que la simple variable
pour éviter x requêtes unitaires, je charge dans plusieurs tableaux des "objets" de l'inventaire d'une liste de personnages. Chaque tableau correspond à un type d'accès particulier ( qu'y a t il dans ce sac ? quels sont les objets de ce type ?) que j'utilise grâce à des "foreach" (pour obtenir la liste suivant des filtres) et des "isset" (est ce que l'objet existe)
Code PHP :
while ($res= $this->_db->Suivant() )
{
$this->_byType[ $res['obj_ext_poss_id'] ][ $res['obj_ext_type_id'] ][] =
$this->_byBag[ $res['obj_ext_poss_id'] ][ $res['obj_ext_conteneur_id' ] ][ $res['obj_position'] ] =
new Obj( $res['obj_ext_type_id'], $res['obj_id'], $res['obj_qte'], $res['obj_taille'],
$res['obj_poids'], $res['obj_quali'], $res['obj_ext_poss_id'], $res['obj_ext_conteneur_id'], $res['obj_position']);
if ( $res['obj_id'] != NULL )
$this->_possessionsId[$res['obj_id']] = $this->_byBag[ $res['obj_ext_poss_id'] ][ $res['obj_ext_conteneur_id' ] ][ $res['obj_position'] ] ];
}
je crée donc pour un enregistrement en base un objet (new Obj) que j'attribue à deux ou trois tableaux
tout cela c'est très bien mais je développe les fonctions de suppression et là quelques inquiétudes, soucis, questions
autant je construis sans problème la requête SQL qui nettoie en base, autant j'aimerais avoir un nettoyage "élégant" de mes tableaux
prenons le cas de la suppression d'un personnage. Le personnage est identifié par $res['obj_ext_poss_id']
ce que j'aimerais faire c'est, par exemple un
Code PHP :
unset($this->_byType[ $res['obj_ext_poss_id'] ])
- à savoir toutes les cas de $this->_byType[ $res['obj_ext_poss_id'] ], mais ça je pense que oui
- mais aussi les objets "obj" associés (et là je ne sais pas trop)
- mais aussi l'ensemble des cases du tableau $this->_possessionsId[$res['obj_id']] qui correspondent à des objets de ce propriétaire
- etc...
là je suis dans le cas d'un personnage complet mais j'aimerais aussi pouvoir
supprimer toutes les possessions d'un personnage d'un certain type (unset($this->_byType[ $res['obj_ext_poss_id'] ][$res['obj_ext_type_id'])
ou supprimer toutes les possessions d'un personnage contenu dans un sac
(unset($this->_byBag[ $res['obj_ext_poss_id'] ][ $res['obj_ext_conteneur_id' ] ])
voyez ce que je veut dire ?
cela marche peut être complètement, naturellement mais j'ai un doute.
je serais en C je bouclerais sur tous les éléments unitaires du plus fin au plus gros, pour tout nettoyer, mais en php est ce utile ou arrive t il à se débrouiller ?
merci de votre aide