Andreas Korthaus: Zugriff auf Klassenvariablen

Beitrag lesen

Hallo!

Das hatte ich zwar vor kurzem schonmal gefragt, aber die damals erlangte Lösung habe ich jetzt probiert und hat nicht funktioniert. Nochmal das Problem:

ich habe folgende Klasse, auf dessen Variablen ich aus einer anderen Klasse zugreifen wil. Wi mache ich das sinnvollerweise, möglichst ohne globale Variablen? so funktioniert es:

class Config {

var $lang = array();

function Config () {

// verfügbare Sprachen
        $this->lang[] = 'de';
        $this->lang[] = 'en';

}

function getCfgVar ($var) {
       return $this->$var;
    }
}

$config = new Config;

class Test {

function bla() {

global $config
        var_dump($config->getCfgVar('lang'));

}

}

Jetzt wollte ich aber das es ohne "global" funktioniert, udn da wurde folgende Lösung gepostet:

class Config {

...

function getCfgVar ($var) {

if (!isset($this)) {
           $this => new Config;
       }
       return $this->$var;
    }
}

class Test {

function bla() {

var_dump(Config::getCfgVar('lang'));

}

}

Das funktioniert nicht, es gibt einen parse error in Zeile: "$this => new Config;"

Kann es daran liegen das ich nur PHP 4.2.3 habe?

mit Folgender Funktion funktioniert es dagegen:

function getVar ($var) {
       global $__gv_config;
        if (!is_object ($__gv_config)) {
            $__gv_config = new Config();
        }
        return $__gv_config->$var;

}
}

$__gv_config = new Config();

Nur was ich mich frage - was habe ich davon? Das darf ich ja dann in jede Methode einbauen, auf die ich über Config:: zugreifen will, inzwischen finde ich eigentlich

global $config
$config->getCfgVar();

besser, da mir das irgendwie sauberer vorkommt.
Was meint Ihr dazu? Ich brache so eine oder mehrere Schnittstellen in fast jeder Klasse.

Grüße
Andreas