Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
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
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Sa 28.01.2006 15:31
Titel
|
|
|
Steht in der Doku:
http://de.php.net/class_exists
Zitat: | 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
|
|
|
|
|
Anzeige
|
|
|
Account gelöscht
Threadersteller
Ort: -
Alter: -
|
Verfasst Sa 28.01.2006 15:35
Titel
|
|
|
jo war in meiner nicht drin.... aber danke dafür dass ich mich jetzt blöd fühlen darf
Zitat: | class_exists
(PHP 4, PHP 5)
class_exists -- Prüft, ob eine Klasse definiert ist
Beschreibung
bool class_exists ( string class_name )
Diese Funktion gibt TRUE zurück, falls eine Klasse mit dem Namen class_name definiert ist, ansonsten wird FALSE zurückgegeben. |
Zuletzt bearbeitet von am Sa 28.01.2006 15:35, 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.
|
|