• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Dynamischer Methodenaufruf Subklasse (Tabs mit Zwischenspeicherung in Datenbank)

tobi-848

New member
Hallo!

Ich verwende mehrere Subklassen, die ineinander verschachtelt sind:
PHP:
class Tabs {
function Tabs() {
	$this->Subklasse = new Subklasse();
}

function ...() {

}
}
$Tabs = new Tabs();

Nun möchte ich die Methode $Tabs->Subklasse->getContent() dynamisch aufrufen, das heisst "$Tabs->Subklasse->getContent()" wird aus der Datenbank ausgelesen und ausgeführt.
Prinzip wie hier - Beispiel 2: PHP: Variablenfunktionen - Manual

Das ganze funktioniert folgendermassen ganz gut:
Code:
$class = $this->{"Sites"}->{"_Modules"}->{"_Images"};
$funct = "loadBody";
$content = $class->$funct());

jedoch müsste $class dynamisch generiert werden können.
Code:
$parts = explode("->", $content);
foreach($parts as $part) {
if($i+1 == count($parts)) {
	$classpart .= "{\"".$part."\"}";
} else {
	$classpart .= "{\"".$part."\"}->";
}						
$i++;
}

Könnt ihr mir helfen?

Gruss
 
Funktioniert der unter diesem Satz stehende Code nicht oder wo/wie genau brauchst du Hilfe?

Nein, der Code funktioniert so nicht

$class = $this->{"Sites"}->{"_Modules"}->{"_Images"};

-> darf kein String sein, damit das Objekt interpretiert werden kann
Die Klassen und Subklassen müssen Strings sein

Ich will das ganze in einer Schleife dynamisch erstellen können, darf aber keinen Punkt-Operator verwenden um die Teile zusammenzuhängen.

Gruss & Danke
 
Du musst in deiner Schleife schon durch die Objekte durchgehen und nicht einen großen String mit lauter "->" bauen:
Code:
$current = $this;
$parts = explode("->", $content);
foreach($parts as $part) {
    $current = $current->$part;
}
hierbei muss natürlich auch noch jede Menge Validierung durchgeführt werden.
 
Zurück
Oben