bofh1337
Erfahrenes Mitglied
Nun ist es soweit, jetzt bricht ein schwarzer Moment in meinem Leben an: Ich weiss im PHP nicht weiter :/
Ich bin gerade dabei, ein kleines MVC-Framework zu bauen, um darauf verschiedene Scripte aufzubauen.
Damit ich nicht überall im Scripte eine Require und/oder Include-Orgie starten muss, will ich benötigte Klassen über die "__autoload()"-Methode innerhalb der Base-Klasse laden, dort scheint es aber ein technisches Problem zu geben, da Singleton-Klassen ja anders geladen werden müssen, wie Factory-Klassen.
Das ganze befindet sich noch im "Rohbau", dort sind noch keinerlei Variablen geprüft oder escapt,- bzw. gegen PHP-Injection geschützt, das ganze ist auch noch nicht getestet, sondern ein Entwurfsmuster.
Sinn und Zweck der ganzen Klamotte ist, das Instancen von Nachgeladenen Klasse auch als Object mit dem jeweiligen Klassennamen innerhalb der Base-Instance verfügbar sein sollen, damit ich nach 6-12 Monaten innerhalb meines eigenen Code`s noch durchblicke,- so sollte es also dann innerhalb des Codes aussehen:
$base = &base::getInstance();
$base->klassenname1->methodeA();
$base->klassenname2->methodeA();
So sieht die Methode bis jetzt aus, eventuell hat einer von euch sowas schon mal gemacht und kann mir da weiterhelfen
__WISO_DIR_CLASSES__ ist dabei eine Konstante mit den Pfaden innerhalb des Scriptes, in diesem Fall der Pfad zum Verzeichnis, wo die ganzen System-Klassen liegen
Probleme sehe ich in der Zeile:
Diese müsste eigentlich so aussehen:
aber dummerweise bedeutet das einen Parse-Error.
Ich bin gerade dabei, ein kleines MVC-Framework zu bauen, um darauf verschiedene Scripte aufzubauen.
Damit ich nicht überall im Scripte eine Require und/oder Include-Orgie starten muss, will ich benötigte Klassen über die "__autoload()"-Methode innerhalb der Base-Klasse laden, dort scheint es aber ein technisches Problem zu geben, da Singleton-Klassen ja anders geladen werden müssen, wie Factory-Klassen.
Das ganze befindet sich noch im "Rohbau", dort sind noch keinerlei Variablen geprüft oder escapt,- bzw. gegen PHP-Injection geschützt, das ganze ist auch noch nicht getestet, sondern ein Entwurfsmuster.
Sinn und Zweck der ganzen Klamotte ist, das Instancen von Nachgeladenen Klasse auch als Object mit dem jeweiligen Klassennamen innerhalb der Base-Instance verfügbar sein sollen, damit ich nach 6-12 Monaten innerhalb meines eigenen Code`s noch durchblicke,- so sollte es also dann innerhalb des Codes aussehen:
$base = &base::getInstance();
$base->klassenname1->methodeA();
$base->klassenname2->methodeA();
So sieht die Methode bis jetzt aus, eventuell hat einer von euch sowas schon mal gemacht und kann mir da weiterhelfen
__WISO_DIR_CLASSES__ ist dabei eine Konstante mit den Pfaden innerhalb des Scriptes, in diesem Fall der Pfad zum Verzeichnis, wo die ganzen System-Klassen liegen
PHP:
protected function __autoload($classdata)
{
if (file_exists(__WISO_DIR_CLASSES__ . '/wiso.class.' . $classdata . '.php'))
{
require (__WISO_DIR_CLASSES__ . '/wiso.class.' . $classdata . '.php');
}
else
{
die ('Class: ' . $classdata . ' konnte nicht per __autoload(); geladen werden!');
}
if (method_exists($classdata, 'getInstance'))
{
$this->$classdata = $classdata->getInstance();
}
else
{
$this->$classdata = new $classdata;
}
}
Probleme sehe ich in der Zeile:
PHP:
$this->$classdata = $classdata->getInstance();
Diese müsste eigentlich so aussehen:
PHP:
$this->$classdata = $classdata::getInstance();
aber dummerweise bedeutet das einen Parse-Error.