Klassenobjekte in Array speichern

benno

Grünschnabel
hi leute!

Ich möchte Objekte in einem Array speichern. Folgenden Ansatz hab ich mal, aber ich weiss nicht mehr weiter.
PHP:
class a {
    var $a_elem = array();      //Array in dem gespeichert werden soll
}
class b	{
    var $b1;      
    var $b2;
    var $b3;
}
Und jetzt möchte ich z.B. 2(oder später dann mehr) Objekte der Klasse b in $a_elem speichern:
PHP:
	$foo = new a;           //Instanz von a erzeugen

	$foo->a_elem = new b(   //wie gesagt da weiss ich nicht weiter
	  $this->b1 = 1, 
          $this->b2 = 2, 
          $this->b3 = 3;  
        );

	print_r($foo->a_elem);   //Ausgabe des Arrays
Und wie greif ich dann auf z.B. $b1 zu?

Hoffe ihr wisst was ich meine und könnt mir weiterhelfen


[EDIT]: Danke fürs helfen methodus!

benno
 
Zuletzt bearbeitet:
dein ansatz sieht zwar ganz nett aus, ist aber naja, halt nur nett ;)

du kannst nicht einfach so objekte mit eigenschaften versehen und wie wild mit funktionen die eigenschaften des objektes manipulieren.

du kannst brauchst außerdem kein array, du übergibst einfach der eigenschaft a_elem das objekt b

$a = new a;
$a->a_elem = new b;

dann kannst du das fein über $a->a_elem->b1 usw. abrufen, demnach auch die werte verändern.

aber new b($this->b1 = 1 usw.) geht natürlich nicht! dazu brauchst du schon eine methode die das macht.


PS: wenn jetzt wieder einer kommt und meint so eine konstruktion
var $a_elem = array();
geht nicht, sollte sich das handbuch mal genauer durchlesen!
 
ähm ich glaube er möchte aber ein array haben ... benno, du hast im grunde alles richtig gemacht, bis auf eine kleinigkeit.

diese zeile:
PHP:
$foo->a_elem = new b(

sollte so lauten:

PHP:
$foo->a_elem[] = new b()

damit ein neues element ans array angehängt wird! was methodus bezüglich der wertzuweisungen bzw. initialisierungswerte meinte stimmt schon. musst am besten dem konstruktor die gewünschten werte übergeben, damit der die werte dann in den variablen des objekts ablegt.
 
hmm... ok, auch ne möglichkeit, war davon ausgegangen, dass das objekt b nur mit den 3 eigenschaften in a::a_elem vorhanden sein soll, also das man auf die 3 eigenschaften über a direkt zugreifen kann.
 
Zurück