ich habe folgendes Problem:
Soweit ich es richtig verstanden habe, wird die Funktion __autoload($lcass) immer automatisch aufgerufen, wenn eine Klasse vorher nicht definiert wurde.
Nun habe ich eine Klasse mit einer statischen Funktion. Wenn ich in dieser eine undefinierte Klasse aufrufe wird die Funktion __autload() nicht ausgelöst.
Wenn ich die __autoload-Funktion mit spl_autoload_register() definiere, dann tut es, aber das wollte ich eigentlich nicht bei jeder statischen Funktion machen.
Gibt es dazu eine Lösung? Oder funktioniert die __autoload()-Funktion bei statischen Funktionen nicht?
Kann ich nicht nachvollziehen – __autoload wird aufgerufen, wie an jeder anderen Stelle auch.
Sicher, dass es nicht an deiner __autoload-Funktion liegt? Lass dir darin mal den Namen der Klasse ausgeben.[/quote]
Genau das ist mein Problem. __autoload wird anscheinend nicht aufgerufen. Ich habe es probiert den Namen der Klasse auszugeben, aber es passiert nichts.
Hier mal meine Datei:
class Foo {
public function __autoload($class) {
echo $class;
}
public static function bar() {
$test = new Class();
}
Aufgerufen wird das ganze mit:
Foo::bar();
Ich sehe keine Ausgabe ‚Class‘, sondern nur einen Fehler:
PHP Fatal error: Class 'Class' not found in [...]/file.php on line ..
__autoload muss eine globale Funktion sein, keine Methode einer Klasse.[/quote]
Achso. Gut, das erklärt dann natürlich alles. Ich dachte, dass es eine Funktion innerhalb einer Klasse wäre.
Dann ist die Frage hiermit geklärt. Danke.