Define und globale Arrays
Bob Ross
- php
Hi
Für ein projekt brauche ich einige Globale Informationen.
Es wäre jetzt ein leichtes natürlich einige defines zu erstellen die ich dann überall einsetzen kann.
Ich bevorzuge aber Arrays im Programmcode (aus ver. gründen) und würde gerne Wissen ob ich Mehrdimensionale Arrays irgendwie Global setzen kann so dass sie in jeder Funktion und Klasse einem Define ähnlich ansprechbar sind.
Danke im Vorraus.
ciao
schreib doch in function oben rein "global $deinarray;"
Tut mir leid, wie meinst du das jetzt?
function global $meinarray FunctionName(){
}
oder meinst du
function FunctionName(){
global $meinArray;
]
Das Problem dass ich dabei sehe wäre allerding dass ich jeder function das anfügen müsste =/
Kann ich das auch gleich einer ganzen Klasse anfügen so dass ich das "nur" allen Klassen jeweils sagen müsste?
ciao
Hallo Bob.
Ich bevorzuge aber Arrays im Programmcode (aus ver. gründen) und würde gerne Wissen ob ich Mehrdimensionale Arrays irgendwie Global setzen kann so dass sie in jeder Funktion und Klasse einem Define ähnlich ansprechbar sind.
Warum übergibst du die betroffenen Arrays nicht als Argumente an die verschiedenen Funktionen?
Du kannst mit return und Referenzen auf Variablen (&$varname) arbeiten. Damit wird dein Code um einiges sauberer.
Einen schönen Samstag noch.
Gruß, Ashura
Hello,
Du kannst sie als Subarray in $GLOBALS einhängen. Dann sollten sie ohne jede weitere Definition überall erreichbar sein.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Klingt gut, wie mache ich das (bzw. wo lese ich dazu im Handbuch)?
danke
ciao
Hello,
Klingt gut, wie mache ich das (bzw. wo lese ich dazu im Handbuch)?
unter "predefined Variables"
http://de2.php.net/manual/en/language.variables.predefined.php
$GLOBALS['meinArray'] = $meinArray;
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi Bob Ross,
Für ein projekt brauche ich einige Globale Informationen.
Es wäre jetzt ein leichtes natürlich einige defines zu erstellen die ich dann überall einsetzen kann.
Ich bevorzuge aber Arrays im Programmcode (aus ver. gründen) und würde gerne Wissen ob ich Mehrdimensionale Arrays irgendwie Global setzen kann so dass sie in jeder Funktion und Klasse einem Define ähnlich ansprechbar sind.
Wenn du einmal dabei bist, objektorientiert zu programmieren, wie wäre es da mit folgender Lösung:
1. Du erstellst eine Basisklasse für alle deine Scripts:
class bobs_globals {
// Konstruktor
function bobs_globals() {
$this->globals = array(
// hier deine globalen Variablen eintragen
);
}
}
2. Du benutzt die wunderbare Eigenschaft der Vererbung:
class irgendeine_andere_klasse extends bobs_globals {
// Konstruktor
function irgendeine_andere_klasse() {
parent::bobs_globals();
}
}
Jetzt sollten alle Methoden von "irgendeine_andere_klasse" mit $this->globals das Array deiner "globalen Variablen" erreichen.
Wenn du das nicht magst, dann definiere dein Array einfach im Script vor allen Funktionen und rufe dann innerhalb der Funktionen die Variablen über das Array $GLOBALS auf:
<?php
$bobs_globals = array(
'bla' => 'irgendwas',
'blubb' => 'was anderes'
);
// ...
function mach_was() {
printf("bla hat den Inhalt '%s'\n", $GLOBALS['bobs_globals']['bla']);
}
mach_was();
?>
PHP-Manual zu Geltungsbereichen von Variablen
happy painting and god bless my friend ;-)
EisFuX