Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajouter des objets a un tableau d'une classe

8 réponses
Avatar
Alex
Salut !

Voila, j'aimerais avoir une classe qui contient un tableau, et pouvoir
mettre dans ce tableau des objets d'un autre type crees par une fonction.

Ex :
class B{.......}
class A{
var $tableau;

function ajouter_un_B(){
$this->tableau[] = new B;
}
}

Mais j'ai l'impression que mon new B n'existe que dans le scope de la
fonction et donc qu'une fois la fonction terminee, il n'y a rien dans le
tableau.

J'ai temporairement contourne le probleme en instanciant mes objets B a
l'exterieur de la classe et en ne mettant en tableau que des references,
mais a long terme ca ne m'est vraiment pas pratique.

Qu'est-ce qu'il y aurait comme solution a ca ?

Merci bien,
--
Alex
[JDR] Visitez Extremia, un monde gratuit et en francais pour D&D et
autres jeux de role.
www.extremia.org

8 réponses

Avatar
David JOURAND
Voila, j'aimerais avoir une classe qui contient un tableau, et pouvoir
mettre dans ce tableau des objets d'un autre type crees par une fonction.

Ex :
class B{.......}
class A{
var $tableau;

function ajouter_un_B(){
$this->tableau[] = new B;
}
}


$this->tableau[count($this->tableau)] = new B(); ?

--
David Jourand

Avatar
Bruno Desthuilliers
Voila, j'aimerais avoir une classe qui contient un tableau, et pouvoir
mettre dans ce tableau des objets d'un autre type crees par une fonction.


(snip code)

Mais j'ai l'impression que mon new B n'existe que dans le scope de la
fonction et donc qu'une fois la fonction terminee, il n'y a rien dans le
tableau.


Si c'est une "impression", il ne tient qu'à toi de vérifier - en
essayant, et éventuellement en lisant la doc.

Avatar
Alex
"Bruno Desthuilliers" wrote in
message news:44ac0ca7$0$16240$

Si c'est une "impression", il ne tient qu'à toi de vérifier - en


Merci.

Comment alors ?

essayant, et éventuellement en lisant la doc.


La doc (que je lis depuis 5 ans sans avoir eu besoin de poser de question
ici...) ne m'a pas aide, justement...

--
Alex
[JDR] Visitez Extremia, un monde gratuit et en francais pour D&D et
autres jeux de role.
www.extremia.org

Avatar
Alex
"David JOURAND" wrote in message
news:
Voila, j'aimerais avoir une classe qui contient un tableau, et pouvoir
mettre dans ce tableau des objets d'un autre type crees par une
fonction.



Ex :
class B{.......}
class A{
var $tableau;

function ajouter_un_B(){
$this->tableau[] = new B;
}
}


$this->tableau[count($this->tableau)] = new B(); ?


Je vais essayer de ce pas.

Mais en quoi est-ce different ? x[] n'est il pas cense pointer sur le
dernier element d'un tableau ? ce qui revient donc a
$this->tableau[count($this->tableau)], ou bien ai-je rate une subtilite ?

Dans la doc je lis $test = new Test; Mais je ne vois pas $test = new Test();

Quelle est la difference ?

Merci pour ton aide,
--
Alex
[JDR] Visitez Extremia, un monde gratuit et en francais pour D&D et
autres jeux de role.
www.extremia.org


Avatar
Vincent Lascaux
Qu'est-ce qu'il y aurait comme solution a ca ?


Donne un code qui ne marche pas
class B
{
var $foo;
function B($bar) { $this->foo = $bar; }
}
class A{
var $tableau;

function ajouter_un_B(){
$this->tableau[] = new B(count($this->tableau));
}
}

$a = new A();
$a->ajouter_un_B();
$a->ajouter_un_B();
$a->ajouter_un_B();
print_r($a);


affiche

A Object
(
[tableau] => Array
(
[0] => B Object
(
[foo] => 0
)

[1] => B Object
(
[foo] => 1
)

[2] => B Object
(
[foo] => 2
)

)

)

Donc, chez moi ca marche (tm)

--
Vincent

Avatar
Bruno Desthuilliers
"Bruno Desthuilliers" wrote in
message news:44ac0ca7$0$16240$


Si c'est une "impression", il ne tient qu'à toi de vérifier - en



Merci.

Comment alors ?



cf le code de Vincent (un peu plus bas dans le thread).


Avatar
Alex
"Vincent Lascaux" wrote in message
news:44ad32ce$0$25510$

Donc, chez moi ca marche (tm)


Effectivement :)

Merci a tous, j'y suis arrive ! J'ai meme un peu complique le truc car les
objets de type B contiennent eux-memes un tableau d'objets de type C et
jusqu'ici ca va...

Prochaine etape, je dois trouver de quoi modifier une fonction de la classe.
Je vais lire la doc et si j'y arrive pas je reviens vous voir.

Merci encore,
--
Alex - 8-9 ans de PHP mais 8-9 semaines avec les objets...
[JDR] Visitez Extremia, un monde gratuit et en francais pour D&D et
autres jeux de role.
www.extremia.org

Avatar
Jean-Marc Molina
Alex wrote:
Merci a tous, j'y suis arrive ! J'ai meme un peu complique le truc
car les objets de type B contiennent eux-memes un tableau d'objets de
type C et jusqu'ici ca va...


Si ton objectif est de gérer des collections d'objets alors tu devrais aussi
te tourner vers les itérateurs de PHP 5. Ça permet notamment de rendre leur
utilisation aussi élémentaire que celle des tableaux normaux.