Salut les loulous!
J'y suis presque, reste le petit bugg avec les clés identiques. Voila ce que j'ai niveau code:
Mon "Model" pour la config des objets (en gros comme pour un Model database, mais lecture seulement; J'extend l'objet Config qui lui a un singleton pour ne charger et parser le fichier config (json) qu'une seule fois, comme pour les database une seul connexion etc.) $this->config contient le tableau de mes objets. Bon je laisse que les 2 méthode qui nous intéressent pour ce cas.
Ensuite ce que j'ai construit avec les conseils de niahoo
Et voici les résultats var_dump() pour quelques tests:
Objet 10, résultat correct, il se compose de l'objet 1 et 3
Objet 11, résultat correct, il se compose de l'objet 1 et 2
Objet 100, résultat correct, il se compose de l'objet 10, qui se compose du 1 et du 3, ainsi que de l'objet 11, qui so compose du 1 et du 2
Et c'est la qu'il y a l'erreur, l'objet 12, se compose de l'objet 3 et de l'objet 3 (donc DEUX fois du même objet). Mais ça foire car il y aurait deux fois la clé 3...
Voila enfaite le problème est la, mais j'ai du mal m'expliquer dans mon premier post (je suis une pive pour les explications, j'ai toujours été ainsi ce n'est rien de nouveau )
Bon après si ça complique trop car je devrait passer par je ne sais quoi comme structure et tout, je vais faire en sorte qu'il n'y ai pas besoin de deux même objets au même niveau.
J'y suis presque, reste le petit bugg avec les clés identiques. Voila ce que j'ai niveau code:
Mon "Model" pour la config des objets (en gros comme pour un Model database, mais lecture seulement; J'extend l'objet Config qui lui a un singleton pour ne charger et parser le fichier config (json) qu'une seule fois, comme pour les database une seul connexion etc.) $this->config contient le tableau de mes objets. Bon je laisse que les 2 méthode qui nous intéressent pour ce cas.
<?php
class ItemsConfig extends Config
{
public function getRequires($itemid)
{
return isset($this->config[$itemid]['requires']) ? $this->config[$itemid]['requires'] : array();
}
public function getRequiresTree($itemid)
{
$Item = new Item($itemid);
return $Item->getRequiresRecursive();
}
}
Ensuite ce que j'ai construit avec les conseils de niahoo
<?php
class Item
{
private $id;
public function __construct($id)
{
$this->id = $id;
}
public function getRequiresRecursive()
{
$requires_id = ItemsConfig::getInstance()->getRequires($this->id); // doit retourner array() vide si pas de parents
$parents = array();
foreach($requires_id as $rid)
{
$parent = new self($rid);
$parents[$rid] = $parent->getRequiresRecursive();
}
return $parents;
}
}
Et voici les résultats var_dump() pour quelques tests:
Objet 10, résultat correct, il se compose de l'objet 1 et 3
Objet 11, résultat correct, il se compose de l'objet 1 et 2
Objet 100, résultat correct, il se compose de l'objet 10, qui se compose du 1 et du 3, ainsi que de l'objet 11, qui so compose du 1 et du 2
Et c'est la qu'il y a l'erreur, l'objet 12, se compose de l'objet 3 et de l'objet 3 (donc DEUX fois du même objet). Mais ça foire car il y aurait deux fois la clé 3...
Voila enfaite le problème est la, mais j'ai du mal m'expliquer dans mon premier post (je suis une pive pour les explications, j'ai toujours été ainsi ce n'est rien de nouveau )
Bon après si ça complique trop car je devrait passer par je ne sais quoi comme structure et tout, je vais faire en sorte qu'il n'y ai pas besoin de deux même objets au même niveau.