mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 00:14 Benutzername: Passwort: Auto-Login

Thema: [feddisch] php - böses __autoload vom 28.01.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [feddisch] php - böses __autoload
Autor Nachricht
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Sa 28.01.2006 13:19
Titel

[feddisch] php - böses __autoload

Antworten mit Zitat Zum Seitenanfang

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: Männlich
Verfasst Sa 28.01.2006 15:31
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Sa 28.01.2006 15:35
Titel

Antworten mit Zitat Zum Seitenanfang

jo war in meiner nicht drin.... aber danke dafür dass ich mich jetzt blöd fühlen darf Lächel

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
 
 
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


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.