Entwickler-Ecke

Programmiersprachen (Server) - [PHP5]Autoload auf Klasse zugreifen lassen


Heiko - So 24.06.07 17:42
Titel: [PHP5]Autoload auf Klasse zugreifen lassen
Hallo,

ich habe in "kleines" Problem. Und zwar nutze ich zur Vereinfachung (bessere Übersichtligkeit beim schreiben) __autoload. Das funktioniert auch schön. Jetzt habe ich jedoch die Konfigurationen aus $GLOBALS herausgenommen und in eine extra Klasse gepackt. Aber autoload will die Klasse nicht. Er sagt mir, dass sie nicht existiert, obwohl sie vorhanden ist:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
//Konfigurationen einbinden
require_once("class/config.class.php");

//Konfigurationen laden
if (!isset($conf)) $conf = new Config();

// Hauptklasse initieren
if (!isset($main)) $main = new Main();

//echo "Parsetime: " . $main->parseTime() . "s";

//autoload
function __autoload($class)
{
    $conf->loadClass($class);
}

Hier wird autoload erst beim erzeugen von Main aufgerufen, also nachdem bereits conf erzeugt wurde. Hat einer von euch Ahnung, woran das hier scheitert? Denn autoload ist nur ein Beispiel wo es nicht klappt. Wenn ene SubKlasse von Main auf die configs zugreifen muss, schlägt das auch fehl - aus dem gleichen Grund. Wenn ich aber vor dem erzeugen von Main folgendes einfüge:

Quelltext
1:
$conf->loadClass('Main');                    

funktioniert das erzeugen von Main. Wenn ich es so habe wie unten aber nicht...

Grüße
Heiko


Christian S. - So 24.06.07 18:05

Fehlt da nicht ein global $conf; in der AutoLoad-Funktion?


Heiko - So 24.06.07 18:16

global geht bezüglich OOP scheinbar nicht:


Quelltext
1:
2:
3:
4:
function __autoload($class)
{
  global $conf->loadClass($class);
}

:arrow:
Zitat:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR, expecting ',' or ';' in ...


Christian S. - So 24.06.07 18:18

Die Syntax von global sieht so aus:


Quelltext
1:
2:
3:
4:
5:
function __autoload($class)
{
  global $conf;
  $conf->loadClass($class);
}


Heiko - So 24.06.07 18:22

:autsch: thx


Heiko - Di 03.07.07 19:46

Also PHP ist echt seltsam. Jetzt funktioniert es auch ohne global :gruebel: