Un Object dans un object

Répondre
maxroucool
le 22/09/2008 à 15:05
maxroucool
Slt tlm,

je suis en train de me faire une class dans laquelle je veux définir un object qui me servira tout au long de la class.

Je sais tout à fait le faire en passant par un tableau multi-dimensionnel, mais la syntaxe est un peut fastidieuse. C'est pourquoi je préfère passer par un object. Si quelque chose s'y oppose dites le moi!

Je veux pouvoir y acceder de cette façon:
"$this->w->head->meta";
et non pas de cette façon (méthode avec des tableaux):
"$this->w['head']['meta']";

Voici mon bout de code qui est buggé, c'est juste un probleme de syntaxe!(enfin je pense)

<?php
function __construct(){

$this->w = Object(
'doctype',
'head' = Object(
'meta',
'title',
'link',
'base',
'script'
),
'body' -> Object(
'menu',
'corps',
'modules'
)
);

}
?>


Le probleme vient du fait d'ajouter un Object dans un autre, je ne sais pas quel opérateur utiliser (ni =, ni ->, ni =>).


merci bp!
+++
LA GLOBULE
le 22/09/2008 à 17:03
LA GLOBULE
Voici un petit exemple d'initialisation de variable.

17:02:42 [Luke] globule ~ $ cat object.php
<?php
$obj = (object) NULL;
$obj->blu = 3;
$obj->toto = 'titi';
$obj->second_object = (object) NULL;
$obj->second_object->pom = 1;
$obj->second_object->toto = array();
$obj->second_object->titi = false;

print_r($obj);
?>
17:02:52 [Luke] globule ~ $ php object.php
stdClass Object
(
[blu] => 3
[toto] => titi
[second_object] => stdClass Object
(
[pom] => 1
[toto] => Array
(
)

[titi] =>
)

)
maxroucool
le 22/09/2008 à 17:09
maxroucool
OK merci,

c'est ce à quoi j'avais penser, il faut les initialiser une par une!

+++
LupusMic
le 22/09/2008 à 18:31
LupusMic
N'oublions pas qu'on peut caster un tableau dans un objet :
<?php

$o = (object) array('head', 'body') ;
$o->head = (object) array('title') ;

?>
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Julien Breux
le 30/07/2009 à 22:29
Julien Breux
Sinon, tu fais un objet qui perdure :
<?php 
class HTML()
{
function getHead()
{
return $this;
}
function Body()
{
return $this;
}
}

$html = new HTML;
$html->Head()->Body();
?>
** Julien Breux - Architecte PHP **
LupusMic
le 01/08/2009 à 02:28
LupusMic
Au cas où tu ne l'as pas remarqué, le problème était de créer des objets déclarés dynamiquement. Et autre détail : je ne pense pas que répondre à un message un an après la résolution apporte quoique ce soit ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours