Dabei seit: 25.01.2004 Ort: Mars Alter: - Geschlecht: -
Verfasst Sa 28.01.2006 13:19 Titel
[feddisch] php - böses __autoload
die magische __autoload-methode ist ja recht praktisch. Eins geht mir aber aufn Sack, wenn
ich bspw. Objekte einer Klasse zur Laufzeit instanziieren will, bspw. durch ne http-request variable
gesteuert (name = klassenname), dann muss ich mit class_exists prüfen, ob die klasse überhaupt
existiert. nun, class_exists scheint nicht erstmal den include-path zu prüfen, obs überhaupt eine
gleichnamige klasse gibt, sondern schickt direkt ne nachricht an __autoload.
in meinem __autoload steht natürlich require_once($klasse), sodass sich das ding, obwohl ich ja nur
PRÜFEN will, obs die klasse gibt, im fehlerfalle mit einem fatal error verabschiedet. doof dabei auch,
dass class_exists trotzdem noch ein true abgibt.
verwende ich class_exists in meinem __autoload-block, so gibt es ganz abstruse meldungen, dann wird
plötzlich gar nichts mehr autogeladen (wahrscheinlich, weil class_exists die INCLUDE_PATH-umgebungs-
variable nicht berücksichtigt).
Schaise... was kann man da machen?
Falls es mal einer braucht: class_exists verträgt nen zweiten Parameter, der dafür zuständig ist, zu steuern, ob __autoload bei der Suche mit einbezogen wird.
Also, verwende man class_exists("className", false);
edit: Posts gejoint. Bitte "edit" verwenden.
Zuletzt bearbeitet von tacker am Sa 28.01.2006 15:30, insgesamt 2-mal bearbeitet
bool class_exists ( string class_name [, bool autoload] )
class_exists() will attempt to call __autoload by default, if you don't want class_exists() to call __autoload, you can set the parameter autoload to FALSE.
Zuletzt bearbeitet von tacker am Sa 28.01.2006 15:32, insgesamt 1-mal bearbeitet
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.