Von Array aus Objektfunktionen nutzen

kapfe89

Mitglied
Hallo Zusammen,

ich bin gerade dabei mir PHP beizubringen. Dabei bin ich auf ein Problem gestoßen. Ich hoffe ihr könnt mir helfen.

Ich würde gerne eine Objekt in einem Array abspeichern, und dann vom Array aus die Funktionen des Arrays nutzen:

$arrayObjekt->array[1]->objektfunktion();
Ich speichere also am Index 1 ein Objekt ins Array und will dann die Methode des Objekts nutzen, wie ich es in Java gewohnt bin. Dann kommt folgende Fehlermeldung:

Fatal error: Call to a member function getName() on a non-object in C:\xampp\htdocs\xampp\php\tutorials.php on line 34

Hier mal ein Beispeil-Code:
PHP:
<?php

/
class Hund
{
	protected $name = "Hasso";
	protected $alter = 20;

	
	public function getName()
	{
		return $this->name;
	}
}
class Hundestall
{
	public $speicher = array();
	protected $pos = 0;

	public function addHund(Hund $hund)
	{
		$this->speicher[$pos] = $hund;
		$this->pos++;
	}

}

//Hund Objekt erzeugen
$h1 = new Hund();
//In Array Objekt abspeichern
$hundestall = new Hundestall();
$hundestall->addHund($h1);


echo $hundestall->speicher[0]->getName();//Das klappt nicht
?>

Wie lässt sich das in PHP umsetzen?

Vielen Dank und viele Grüße,
Martin
 
Hi,

anke für die schnelle Antwort.
Werde aber aus dem Link nicht richtig schlau, da ich noch ziemlicher PHP Neuling bin.

Wie müsste ich den da den Code umschreiben, damit es so funktioniert wie ich will?

Viele grüße,
Martin
 
Hi,

Call to a member function getName() on a non-object


Das heißt, es ist nicht möglich, aus einem Array die Methoden des gespeicherten Objekts nutzen, oder?

Ich muss das also irgendwie mit offset machen?

Grüße Martin
 
Eigentlich hätte ich erwartet, dass er hier meckert:
Code:
$this->speicher[$pos] = $hund;

;)

Einsatz von error_reporting(E_ALL);
PHP:
<?php
error_reporting(E_ALL);

//dein Code

?>

Gruß
 
Also das abspeicher klappt aber so wie ichs gemacht habe.

Die komplette Fehlermeldung ist so:

Notice: Undefined variable: pos in C:\xampp\htdocs\xampp\php\tutorials.php on line 25

Notice: Undefined offset: 0 in C:\xampp\htdocs\xampp\php\tutorials.php on line 37

Fatal error: Call to a member function getName() on a non-object in C:\xampp\htdocs\xampp\php\tutorials.php on line 37


Ich möchte ja nur die Methoden des Hund-Objekts nutzen, was im Array gespeichert ist...
Wie würde den das anders gehen?

Grüße Martin
 
Hi,

ich hatte gehofft dass du selbst drauf kommst, die Fehlermeldungen sind doch mehr als eindeutig:

Code:
$this->speicher[$pos] = $hund;
ändern in:
Code:
$this->speicher[$this->pos] = $hund;

Gruß
 
Zurück