Autor Beitrag
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 24.06.07 17:42 
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:

ausblenden 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:
ausblenden Quelltext
1:
$conf->loadClass('Main');					

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

Grüße
Heiko
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 24.06.07 18:05 
Fehlt da nicht ein global $conf; in der AutoLoad-Funktion?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 24.06.07 18:16 
global geht bezüglich OOP scheinbar nicht:

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 24.06.07 18:18 
Die Syntax von global sieht so aus:

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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 24.06.07 18:22 
:autsch: thx
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Di 03.07.07 19:46 
Also PHP ist echt seltsam. Jetzt funktioniert es auch ohne global :gruebel: