05-07-2011, 05:55 PM
(Modification du message : 30-09-2011, 02:37 PM par Sephi-Chan.)
coucou
je me pose certainement un problème qui n'en est pas un cependant j ai un peu peur de fuite mémoire (ou du moins de consommation inutile de mémoire, le temps que le script se termine)
dans un objet, j'ai un tableau de références à d'autres objets.
je veux au cours d'un traitement, vider ce tableau (et supprimer tous les objets qui le composent, ceux ci n'étant référencer nul par ailleurs)
Puis le remplacer par un autre.
j'aimerais savoir si je m'y prend bien, ou si je dois parcourir mon tableau pour "unseter" tous les objets un par un
Pour exemple, un code que je n'ai pas encore tester qui doit me permettre de construire une sorte d'arbre de décision
n'hésitez pas à me dire si vous voyez une manière plus propre de manipuler l'arbre
grosso modo le comportement doit être
j'ai une feuille originelle O
elle se transforme en 3 feuilles (car 3 scenarii) :
A1
A2
A3
puis j'ai deux nouveaux scenarii pour le niveau supplémentaire, j'obtiens alors 6 feuilles :
A1 + B1
A1 + B2
A2 + B1
A2 + B2
A3 + B1
A3 + B2
etc...
je me pose certainement un problème qui n'en est pas un cependant j ai un peu peur de fuite mémoire (ou du moins de consommation inutile de mémoire, le temps que le script se termine)
dans un objet, j'ai un tableau de références à d'autres objets.
je veux au cours d'un traitement, vider ce tableau (et supprimer tous les objets qui le composent, ceux ci n'étant référencer nul par ailleurs)
Puis le remplacer par un autre.
j'aimerais savoir si je m'y prend bien, ou si je dois parcourir mon tableau pour "unseter" tous les objets un par un
Pour exemple, un code que je n'ai pas encore tester qui doit me permettre de construire une sorte d'arbre de décision
Code :
class globalScenarii extends classRoot
{
protected $_scenarii = array(); // tableau de globalscenario
// ajoute un niveau supplémentaire à mon arbre : pour chaque feuille ($this->_scenarii) je multiplie les feuilles par la liste de scenarii passée en paramètre ($scenarii)
public function AddConstraint($scenarii)
{
$newScenarii = array();
foreach ( $this->_scenarii as $globalScenario)
{
foreach ( $scenarii as $scenario)
{
$newScenario = clone $globalScenario; // je clone ma feuille autant de fois que nécessaire
$newScenario->Add($scenario); // j'y ajoute ce qui va bien
$newScenarii[] =$newScenario; // je garde en mémoire le résultat
}
}
unset($this->_scenarii); // suppression (j espère de tout ?)
$this->_scenarii = $newScenarii; // nouvelle attribution
}
}
n'hésitez pas à me dire si vous voyez une manière plus propre de manipuler l'arbre
grosso modo le comportement doit être
j'ai une feuille originelle O
elle se transforme en 3 feuilles (car 3 scenarii) :
A1
A2
A3
puis j'ai deux nouveaux scenarii pour le niveau supplémentaire, j'obtiens alors 6 feuilles :
A1 + B1
A1 + B2
A2 + B1
A2 + B2
A3 + B1
A3 + B2
etc...