[php]classes: objecten in objecten in objecten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • paul2005
  • Registratie: Maart 2002
  • Laatst online: 26-04 21:34
Ik loop tegen een voor mij vaag probleem aan met php en arrays van objecten.
Op mijn lokale server draait php5 en werkt alles als een zonnetje. Nu wil ik hetzelfde op een remote server laten draaien met php4 en daar gaat iets fout. Het lijkt er op alsof arrays van objecten maar 2 diep onthouden worden.

Een uitgekleed voorbeeld van wat ik heb
PHP:
1
2
3
4
5
6
7
8
9
include('SubObject.class.php');

class HoofdObject {
  var $subObjectArray = array();

  function HoofdObject() {
    array_push($this->subObjectArray(new SubObject()));
  }
}


PHP:
1
2
3
4
5
6
7
8
9
include('SubSubObject.class.php');

class SubObject {
  var $subSubObjectArray = array();

  function SubObject() {
    array_push($this->subSubObjectArray(new SubSubObject()));
  }
}


PHP:
1
2
3
4
5
6
7
class SubSubObject {
  var $eenVar;

  function SubSubObject() {
    $this->eenVar = 'test';
  }
}


Als ik nu met print_r kijk wat er in $hoofdObject = new HoofdObject(); zit dan krijg ik het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
hoofdObject Object
(
    [subObjectArray] => Array
        (
            [0] => subObject Object
                (
                    [subSubObjectArray] => Array
                        (
                        )
                )
        )
)


onder [subSubObjectArray] => Array zou nog [eenVar] => test moeten staan maar dat is plots verdwenen.
Op mijn versie van php (php5) werkt het maar op de remote versie (php4) dus niet. Ik heb al verschillende tutorials en sites bezocht maar meestal gaan ze niet verder dan een object met een array van objecten. Daar wordt ik dus niet erg veel wijzer van. Wat doe ik fout?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-06 16:30

Bosmonster

*zucht*

Ik neem aan dat dit typ-fouten zijn?

PHP:
1
array_push($this->subObjectArray(new SubObject()));


en moet zijn

PHP:
1
array_push($this->subObjectArray, new SubObject());



Verder werkt je code (als ik bovenstaande aanpas) hier gewoon zoals het zou moeten werken met de volgende output:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hoofdobject Object
(
    [subObjectArray] => Array
        (
            [0] => subobject Object
                (
                    [subSubObjectArray] => Array
                        (
                            [0] => subsubobject Object
                                (
                                    [eenVar] => test
                                )

                        )

                )

        )

)


PHP 4.3.9 geloof ik.

[ Voor 68% gewijzigd door Bosmonster op 24-01-2006 11:07 ]


Acties:
  • 0 Henk 'm!

  • paul2005
  • Registratie: Maart 2002
  • Laatst online: 26-04 21:34
Dat waren inderdaad type-fouten.
Het voorbeeld werkt bij mij ook, nu de volledige versie nog.
Bedankt dat je even laat weten dat de fout bij mij ligt en niet bij php :+
Ik ga kijken wat ik fout doe.

edit/
Uiteindelijk lijkt het te gaan om de volgorde waarin alles gebeurt. Ik maakte eerste eerst de hoofdobjecten aan om die vervolgens met rust te laten en andere bewerkingen te doen. Op het moment dat ik ze nodig had werd het hoofdobject geselecteerd en dan de array met subobjecten gevuld.

Nu maak ik eerst alle objecten aan en dan is het hier geen probleem.

[ Voor 48% gewijzigd door paul2005 op 24-01-2006 20:10 ]