Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Funktio ei tunnista muuttujaa

Juhko [17.12.2009 19:45:31]

#

Sovelluksessani on kolme tiedostoa, settings.php, topinclude.php ja sections.php, joita kutsutaan tuossa järjestyksessä. Siis sections.php:ssä on rivi include("topinclude.php"); ja topinclude.php:ssä rivi include("settings.php");. Topinclude.php:ssä on määritelty funktio, jonka pitäisi tietää settings.php:ssä määritellyt muuttujat. Funktiota kutsutaan sections.php:stä. PHP heittää erroria topinclude.php:stä funktion sisältä (undefined variable). Miten saan korjattua?

trilog [17.12.2009 19:49:33]

#

Muuttujien näkyvyysalueet?

<?php
$a = 123;

function b() {
    return $a+5;
}

echo b();

// Tulostaa: 5 (ja noticen)

Juhko [17.12.2009 21:47:47]

#

En osaa määrittää niitä.

alottelijaa [17.12.2009 22:02:10]

#

jos koodissa on toi a ja sen jälkeen tulee funktio b b:ssä ei näy noi muuttujat mitkä on sen ulkopuolella, vaan täytyy tehdä näin:

<?php
$a = 123;

function b($muuttuja) {
  return $muuttuja + 5;
}

echo b($a);
?>

tsuriga [17.12.2009 22:19:33]

#

Asetukset voidaan tuoda funktioon myös global-avainsanalla.

<?php
// settings.php
$settings = array();
$settings['debug'] = true;

// topinclude.php
function foo() {
    global $settings;

    if ($settings['debug']) {
        echo 'Running function foo()';
    }
}

Joskin globaalit muuttujat ovat aina vaihtelevasti ikäviä jatkokehittäjien kannalta.

Metabolix [17.12.2009 23:36:51]

#

Globaalit muuttujat löytyvät lisäksi taulukosta $GLOBALS, eli esimerkiksi $GLOBALS['a'] viittaisi globaaliin $a-muuttujaan myös funktion sisällä.

Juhko [18.12.2009 19:53:55]

#

Nyt toimii, kiitoksia jälleen kerran.

Vastaus

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

Tietoa sivustosta