B
Bailor
Hallo,
Ohne viele Worte... Ich habe folgende Klassen und Instanzen:
Nun, wenn ich den Code wie oben ausführe gibt es natürlich eine Fehlermeldung, da die Instanz $class1 der Klasse Class1 natürlich nicht in dieser Funktion call() verfügbar ist.
Ich könnte diese Fehlermeldung beseitigen, indem ich die Instanz $class1 mittels global verfügbar mache, aber dies löst nicht mein Problem, da mit call nicht die Klasse Class1 angesprochen werden soll, sondern jede beliebige Klasse in meinem Projekt.
Mein letzter Versuch war, dass ich eine "Container-Klasse" schaffe, und die anderen via extend anbaue:
Jetzt kann ich zumindest die jeweiligen Funktionen aufrufen, allerdings bekomm ich als Ausgabe nur "bla" und nicht "Ausgabe", weil er direkt auf die Funktion show der Klasse Class1 zugreift, und die Veränderungen durch die Instanz $class1 ignoriert.
Genausowenig hilft es etwas, einen Constructor laufen zu lassen; er greift stur nur auf die ursprüngliche Funktion + Werte zu.
Tja nun... Hat irgendjemand eine Idee, wie ich dieses Problem lösen könnte?
Dazu nochmal meine Zielvorstellung:
In der Datenbank stehen Funktions- bzw. Klassen-Aufrufe; diese werden ausgelesen, überprüft ob sie ausführbar sind und dann aufgerufen und ausgeben.
Wichtig: Ich will auf Instanzen zugreifen.
Für Hilfe wär ich dankbar...
Grüße, Bailor
Ohne viele Worte... Ich habe folgende Klassen und Instanzen:
PHP:
class Class1
{
var $dump = "bla";
function show()
{
return $this->dump;
}
}
$class1 = new Class1();
$class1->dump = "Ausgabe";
class Class2
{
function call()
{
// der String "$class1->show()" wird aus einer
// Datenbank geholt und mit eval() ausgeführt.
return $class1->show;
}
}
$class2 = new Class2();
echo $class2->call();
Nun, wenn ich den Code wie oben ausführe gibt es natürlich eine Fehlermeldung, da die Instanz $class1 der Klasse Class1 natürlich nicht in dieser Funktion call() verfügbar ist.
Ich könnte diese Fehlermeldung beseitigen, indem ich die Instanz $class1 mittels global verfügbar mache, aber dies löst nicht mein Problem, da mit call nicht die Klasse Class1 angesprochen werden soll, sondern jede beliebige Klasse in meinem Projekt.
Mein letzter Versuch war, dass ich eine "Container-Klasse" schaffe, und die anderen via extend anbaue:
PHP:
class Container {}
class Class1 extends Container
{
var $dump = "bla";
function show()
{
return $this->dump;
}
}
$class1 = new Class1();
$class1->dump = "Ausgabe";
class Element extends Container
{
function call()
{
return Class1::show();
}
}
$element = new Element();
$element->call();
Genausowenig hilft es etwas, einen Constructor laufen zu lassen; er greift stur nur auf die ursprüngliche Funktion + Werte zu.
Tja nun... Hat irgendjemand eine Idee, wie ich dieses Problem lösen könnte?
Dazu nochmal meine Zielvorstellung:
In der Datenbank stehen Funktions- bzw. Klassen-Aufrufe; diese werden ausgelesen, überprüft ob sie ausführbar sind und dann aufgerufen und ausgeben.
Wichtig: Ich will auf Instanzen zugreifen.
Für Hilfe wär ich dankbar...
Grüße, Bailor
Zuletzt bearbeitet von einem Moderator: