Dennis: require_once und global

Beitrag lesen

Hi Manu,

Nun ja, was passiert bei diesem Code? Schauen wir uns das mal im Detail an:

function setValues ($sFilename) {

require_once('config/constants.conf.php');

// Die Datei constants.conf.php wird geladen, diese definiert die
        // Variable $aServiceCode, welche nun vom Typ Array ist.

global $aServiceCode;

// Nun wird die globale Variable $aServiceCode an selbige lokale
        // Variable gebunden, prinzipiell geschieht also so etwas:
        // $aServiceCode = $GLOBALS['aServiceCode']
        // Dadurch gehen die Werte aus der constants.conf.php natürlich
        // verloren.

print_r($aServiceCode);

// ... und du hast hier wieder den Wert, den du vor Aufruf der
        // Fuktion hattest.

}

  
Kurz um: Vertausche die beiden Zeilen require und global, oder nutze das superglobale Array $GLOBALS, wie Pryos es vorgeschlagen hat.  
  
Noch eine Frage: Warum verwendest du require\_once()? Eine Funktion sollte man normalerweise auch mehrfach aufrufen können, aber wenn du deine Funktion ein zweites Mal aufrufst, gibt es einen Fehler. Du solltest an dieser Stelle aus meiner Sicht lieber nur require() verwenden oder über setzen eines Flags einen zweiten Aufruf von require\_once() verhindern.  
  
  
Viele Grüße,  
  ~ Dennis.

-- 
Mein [SelfCode](http://community.de.selfhtml.org/fanprojekte/selfcode.htm): [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)