PHP Gelöst: define() nicht in der Klasse verfügbar

M3Y3R

Well-known member
ID: 336361
L
8 Mai 2006
1.608
60
Hallo,

ich habe folgendes Problem. In meiner config.php habe ich mehrere Defines definiert:

PHP:
//config.php

define('_PATH_SCRIPT_', 'pfad/zum/script/');
define('_PATH_A_',  _PATH_SCRIPT_.'erstes/');
define('_PATH_B_',  _PATH_SCRIPT_.'zweites/');
define('_PATH_C_',  _PATH_SCRIPT_.'drittes/');

Später wird in der config.php eine Klasse includes und Initialisiert.
In dieser Klasse (genauer gesagt im Konstruktor) sollen Pfade festgelegt werden:
PHP:
public function __construct(){
   $this->conf = array();
   $this->conf['PATH']['EINS'] = _PATH_A_;
   $this->conf['PATH']['ZWEI'] = _PATH_B_;
   $this->conf['PATH']['DREI'] = _PATH_C_;
}

Wenn ich nun das Script aufrufe, erhalte ich folgende Fehlermeldung:
PHP Notice: Undefined index: PATH in class.myClass.php on line 45
PHP Notice: Undefined index: PATH in class.myClass.php on line 46
PHP Notice: Undefined index: PATH in class.myClass.php on line 47

Normalerweise sind die defines() ja Globale Variablen. Warum kann ich diese dann nicht mehr in der Klasse verwenden. In einer Früheren Version hat dies auch funktioniert.


Danke für die Hilfe!


Mit freundlichen Grüßen
Papenburger
 
Zuletzt bearbeitet:
Die Fehlermeldung gleich zu posten, ist schon mal ein guter Schritt, noch besser wäre es, sie erst einmal selbst zu lesen und zu verstehen ;)

PHP Notice: Undefined index: PATH in [...]

Das heißt, der Array-Index PATH ist an dieser Stelle noch nicht bekannt! Es reicht also nicht, das Array zu initialisieren, auch der entsprechende Index muss angelegt werden:

PHP:
public function __construct(){
   $this->conf = array();
   $this->conf['PATH'] = array();
   $this->conf['PATH']['EINS'] = _PATH_A_;
   $this->conf['PATH']['ZWEI'] = _PATH_B_;
   $this->conf['PATH']['DREI'] = _PATH_C_;
}

So sollte es funktionieren!

Oder alternativ folgende Zeile:
PHP:
$this->conf = array('PATH' => array());
 
Die Fehlermeldung gleich zu posten, ist schon mal ein guter Schritt, noch besser wäre es, sie erst einmal selbst zu lesen und zu verstehen ;)

Genau das habe ich auch getan. Mir ist bewusst, dass er die Variable bzw. den Index des Pfades nicht kennt.

Das heißt, der Array-Index PATH ist an dieser Stelle noch nicht bekannt! Es reicht also nicht, das Array zu initialisieren, auch der entsprechende Index muss angelegt werden:

PHP:
public function __construct(){
   $this->conf = array();
   $this->conf['PATH'] = array();
   $this->conf['PATH']['EINS'] = _PATH_A_;
   $this->conf['PATH']['ZWEI'] = _PATH_B_;
   $this->conf['PATH']['DREI'] = _PATH_C_;
}

So sollte es funktionieren!

Leider nein, denn so erstelle ich immer meine Arrays.
Ich habe dies leider gerade in meinem Posting vergessen zu schreiben...

Auch innerhalb der Klasse selbst werden die definierten Variablen nicht ausgegeben... So als wenn er diese garnicht hat!

__________________________________________________________
UPDATE: 19.03.2010 - 09:04
Habe meinen Fehler gefunden. Ich habe wohl im Laufe der Zeit den Klassennamen umbenannt aber den Fonstruktor nicht...
Dies führte dazu, dass die Initialisierung der Klasse nicht erfolgt weshalb er auch die Variablen nicht kennt!

Danke für deine Hile !
 
Zuletzt bearbeitet:
Hi,

hast Du die Var auch im objekt selbst definiert?

public/private/protected $conf = array();

Machmal geht's auch ohne, aber so bist Du immer auf der sicheren Seite, UND kannst gewisse Dinge vordefinieren.

Gruß