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