Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: require & require_once

B_R_H [04.12.2009 11:46:34]

#

Terve,

Mulla on 1 php lähdekoodi-tiedosto, jossa mukana "sisällä" funktio ao. tyyliin.

<?php
require_once('asetukset.php');

function dumpQuery()
{
   require_once('asetukset.php');
}

Jos molemmissa on require_once, niin funktion koodissa oleva ei tee includea, vaan asetukset.php:ssä olevat määrittelyt jäävät tulematta koodiin. Toisaalta funktiossa ei sitten taas nähdä itse koodissa olevan require_once:n tuomia määrittelyitä.

Jos muuta funktiossa olevan require_once --> require, niin näyttäisi toimivan.

Onko tässä jotakin mitä en hoksaa ja onko jotenkin tyhmää includeta sama tiedosto kahdesti? Fiksuahan olis välittää tarvittavat muuttuvat funktiolle parametreina.

Kiitos valaisijalle etukäteen!

Metabolix [04.12.2009 11:50:08]

#

Muuttujien näkyvyysalueet. Lue koko sivu tarkasti, siellä on paljon tärkeää tietoa.

<?php
$a = 1;
function virhe() {
  echo $a;
}
function toimii() {
  global $a;
  echo $a;
}

B_R_H [04.12.2009 12:48:09]

#

Kiitti hyvä vinkki!
Tuo $GLOBALS, voisi olla käyttökelpoinen tässä tapauksessa.

Nää 2-uloitteiset on mulla vaikeita.
jos mulla on määritelty

<?php
$sivu["otsikko"]="Testiympäristö";
// Nythän tämä voidaan tulostaa
echo $sivu["otsikko"];

Miten tämä saadaan näkyviin $GLOBALS-taulukosta?

Chiman [04.12.2009 13:02:11]

#

<?php
print_r($GLOBALS); // debuggaukseen
echo $GLOBALS['sivu']['otsikko']; // ehkä näin

B_R_H [04.12.2009 13:42:39]

#

Noin sitä kokeilin, mutta ei tulosta mitään (=null).
Tuo $GLOBALS-print tulostaa kuten pitääkin ja kaivatut arvot näkyvät arrayssa ok.

Array ( ) [sivu] => Array ( [otsikko] => Olen otsikko)

B_R_H [04.12.2009 18:55:14]

#

Oikein hävettää myöntää!

$GLOBALS['sivu']['otsikko'];

kannattaan varmaankin pistää eteen myös echo eli

<?php
echo $GLOBALS['sivu']['otsikko'];

niin johan toimii

Sorry!

walkout_ [05.12.2009 23:43:33]

#

<?php
function virhe() {
  $a = 1;
  return $a;
}
function toimii() {
  echo virhe();
}
?>

returnilla saa muutujan myös ulos functiosta.. mut joo ehkä tää on huono vastaus..

Vastaus

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

Tietoa sivustosta