Newsgroup: it.comp.www.php
Titolo: $_GET e function

Sto migrando da ASP e PHP e quindi sto convertendo alcune applicazioni per
capire bene il funzionamento.
Sto provando la gestione delle function ma ho notato (se non erro) che le
variabli di una pagina non sono condivise dalla funzione creata e anche i
valori che passano tramite GET o POST non vengono letti dalla funzione.
Faccio un esempio:
URL=
www.miosito.it/test.php?casa=topolinia
<?
$var1="pippo";
$var2="pluto";
function personaggi($prova){
	$testo=$var1." e ".$var2." in sieme a ".$prova."vivono a ".$_GET['casa'];
	return $testo;
}
echo personaggi("Topolino");
?>
Adesso al di la della stupidata del codice la funzione non riconosce nè le
variabili impostate "fuori" dalla funzione nè quella passata tramite la
URL.
Ora è vero che posso passargli tutti i parametri direttamente quando invoco
la funzione, ma mi è molto comodo fare come ho descritto. Sotto ASP la
funziona gira correttamente.
E' possibile ottenere lo stesso funzionamento oppure devo necessariamente
passargli tutte le variabili quando richiamo la funzione?
Grazie, Stefano

 letti dalla funzione.
Uhm... Qui, invece, c'è qualcosa che non mi torna. A partire da PHP
4.1.0 sono stati introdotti gli array superglobal $_POST, $_GET,
eccetera... che, proprio perché superglobal, sono automaticamente
disponibili anche dentro una funzione:
http://www.php.net/manual/en/reserved.variables.php#reserved.variables.get
Prova le seguenti righe di codice passando, via GET, il parametro
`par` valorizzato con quello che vuoi. Cosa ottieni?
<?php
function theGET()
{
  if (isset($_GET['par']) && trim($_GET['par']) != '') {
    return $_GET['par'];
  } else {
    return 'parametro non definito';
  }
}
echo theGET();
?>
Ciao.
-- 
Federico

     return 'parametro non definito'
Ti ringrazio funziona perfettamente, è che su PHP le variabili $_GET e
$_POST bisogna sempre verificarne PRIMA l'esistenza e poi se sono piene o
vuote, sotto ASP invece dai un bel request.querystring o request.form e se
è settata o no, se è piena o vuota comunque funziona restituendo al massimo
un valore nullo.
Devo ancora provare con le COSTANTI invece delle variabili ma già così va
benissimo.
Ciao Stefano

 un valore nullo.
Anche in PHP, se la variabile non e` stata istanziata torna il valore
vuoto (o zero se e` numerica).
Aggiungo la mia sconsigliandoti caldamente di usare global. E` come il
goto: meno lo usi meglio e`.
Bye.

 Aggiungo la mia sconsigliandoti caldamente di usare global. 
Cosa sarebbero i global? (tanto per ribattere che sono proprio all'inizio
anche se ho già quasi completamente convertito questo sito 
www.ficiesse.it
da asp a php).
ciao Stefano

 
www.ficiesse.it
 da asp a php).
Quello che ti hanno consigliato in un'altra risposta:
$a = "ciao";
function pippo()
{
  global $a, $b;
  print $a;
}
$a = "addio";
pippo();
gia` questo provoca confusione durante la lettura del codice, soprattutto
se la prima assegnazione e la funzione sono in un file e la seconda
assegnazione e il richiamo della funzione sono in un'altro.
Per questo sconsiglio di usarlo.
Bye.

 Per questo sconsiglio di usarlo.
E cosa consiglieresti di usare in alternativa per ovviare al problema? Solo 
passarli tramite parametri?
rob4you



O passarli come parametri o comunque racchiudere la funzione in un oggetto
e usare attributi dell'oggetto invece di variabili globali.
Io preferisco la seconda soluzione (a oggetti), in modo che devi
istanziare l'oggetto, e solitamente li` fai anche tutto il resto (assegni
gli attributi, lo inizializzi e richiami almeno una funzione base) in uno
spazio "stretto" visualmente parlando. Quindi nell'editor hai tutto
sott'occhio.
Bye.