Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Superglobaalius

tsuriga [24.03.2006 03:10:12]

#

Mitenkähän muuttuja pitää määritellä superglobaaliksi, kun seuraava antaa huomautusta:

<?php

$foo = array();
$GLOBALS['foo'] = array();

function bar() {
  return $foo;
  }

bar();

?>

Ze Manuaali kirjoitti:

This is a 'superglobal', or automatic global, variable. This simply means that it is available in all scopes throughout a script. You don't need to do a global $GLOBALS; to access it within functions or methods.

kayttaja-2791 [24.03.2006 09:42:07]

#

Mitäs huomautusta tuo muka antaa? Eihän se toki toimi, mutta eihän sen noin pitäisikään toimia. Vai olenkohan missannut jotain...

Eli $GLOBALS-muuttuja on superglobaali: sitä ei tarvitse globalisoida erikseen:

<?php
$GLOBALS['foo'] = array();

function bar() {
  echo $GLOBALS['foo'];
  }

bar();
?>

Eli tuon pitäisi echottaa "Array". Jos haluat jonkin yksittäisen muuttujan superglobaaliksi (kuten vaikka tuo $foo) niin en tiedä kuinka se onnistuu, tai että onko se edes mahdollista. Luulisin ettei ole.

tsuriga [24.03.2006 14:59:35]

#

Ach niin, arvelin ensin, että se tekisi yksittäisestä muuttujasta superglobaalin. Semmoinen olisi kyllä kätevä, minulla kun sattuu olemaan arrayta arrayn perään siinä muuttujassa, joten sen arvojen hakeminen on tuskaa. Varsinkin jos pitäisi lisätä alkuun vielä $GLOBALS. Tuo minun heittämä pätkäni heittää siis noticen "Undefined variable $foo", kuten pitääkin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta