Aufrufen einer Klasse über eine andere

psychokill

Grünschnabel
Heyho Leute.

Folgendes Problem:
Ich hab eine (Haupt)Klasse die andere Klassen sozusagen initialisiert.
Jedoch würde ich gerne funktionen der anderen Klassen eben auch über die (Haupt)Klasse aufrufen können.

Der Aufruf erfolgt von mir so:
HauptKlasse::$seiteDT->seiteAzeigen();

Klassenaufbau:
PHP:
// Haupt Klasse
class HauptKlasse {
	public static $seiteDT;
	
	public function __construct() {
		$this->startSeite();
	}
	
	public function startSeite() {
		require_once('/SeitenVerarbeiter.class.php');
		self::$seiteDT = new SeitenVerarbeiter();
	}
}

// Andere Klasse
class SeitenVerarbeiter {
	public $seite;

	public function seiteAnzeigen() {
		return $this->seite;
	}
}

Die Frage an euch: Was mach ich falsch?

Folgender Fehlercode!
Fatal error: Call to a member function seiteAnzeigen() on a non-object in "PFAD" on line "ZEILENNUMMER"
 
HauptKlasse::$seiteDT ist also kein objekt ;)

Warum nicht? => Weil du duch den statischen Aufruf nicht den Konstruktor aufrufst weshalb $seiteTD auch keine Wert zugewiesen bekommt. Was du da machst ist ein Mischmasch aus Singeltone und normaler Objektkomposition, di9e so in keiner Weise einem vernünftigen Applikationdesign entspricht.

PHP:
<?php
// Haupt Klasse
class HauptKlasse {
    public $seiteDT;
    
    public function __construct() {
        $this->setSeite();
    }
    
    public function setSeite() {
        require_once('/SeitenVerarbeiter.class.php');
        $this->$seiteDT = new SeitenVerarbeiter();
    }

    public function getSeite() {
        return $this->$seiteDT;
    }
}

// Andere Klasse
class SeitenVerarbeiter {
    public $seite;

    public function seiteAnzeigen() {
        return $this->seite;
    }
}

PHP:
<?php
$app = new HauptKlasse;
$app->getSeite()->seiteAnzeigen()
 
Hmm okay Applikationdesign, werd mir das mal zu herzen nehmen.

Nichtsdestotrotz hätte ich einfach nur die HauptKlasse mal aufrufen sollen (new Hauptklasse).
Funktioniert trotzdem.
 
Zurück