[PHP] Chiamare una variabile esterna all'interno di un return in una funzione

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
afullo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 622
Iscrizione: venerdì 5 settembre 2008, 0:34
Località: Almese (TO)
Contatti:

[PHP] Chiamare una variabile esterna all'interno di un return in una funzione

Messaggio da afullo »

PHP: ho una funzione che ritorna una stringa, come posso fare affinché parte di questa stringa dipenda da una variabile definita esternamente alla funzione (non come suo argomento) ? ;)

Grazie in anticipo. :)
pier_IP
Prode Principiante
Messaggi: 51
Iscrizione: sabato 17 ottobre 2009, 10:34
Contatti:

Re: [PHP] Chiamare una variabile esterna all'interno di un return in una funzione

Messaggio da pier_IP »

Cioe' tu intendi una situazione di questo tipo

Codice: Seleziona tutto

function funz(){
    return "Hello "./*variabile esterna*/
}
$mondo = "World";
funz();
Dove $mondo e' esterna alla funzione e si vuole visualizzarla subito dopo "Hello "  ?

Puoi semplicemente passare $mondo come parametro

Codice: Seleziona tutto

function funz($world){
    return "Hello ".$world
}
$mondo = "World";
funz($mondo);
Devi passargliela per forza in input.
Questioni di scope...
Aiuto utenti linux, esercizi svolti di matematica e teoria (statistica e analisi), strumenti matematici vari (scomposizione fattori primi, permutazioni, ...), progetti software didattici con documentazioni. Tutto qui : http://pierprogramm.altervista.org/wordpress
afullo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 622
Iscrizione: venerdì 5 settembre 2008, 0:34
Località: Almese (TO)
Contatti:

Re: [PHP] Chiamare una variabile esterna all'interno di un return in una funzione

Messaggio da afullo »

Nella fattispecie la situazione è così:

[php]

$width = "162"

function gruppo($titolo, $colore, $bordo) {
return '


















'. $titolo .'
 

 
 '; }

[/php]

Vorrei che quel 162 dentro la function fosse sostituito da un richiamo di $width, per poi fare in modo che anche il 142 e il 132 fossero sostituiti da $width-20 e $width-30, in modo tale che se dovessi cambiare la larghezza mi basterebbe parlo soltanto cambiando il valore della variabile (la sostituzione la andrei a fare anche altrove, questo è solo un esempio).

Se metto un parametro in più nella funzione, però, ogni volta che la richiamo gliene devo dare 4, non 3, per cui dovrei andare a modificare tutti i richiami ovunque li abbia fatti. Se possibile vorrei evitare di dover operare queste modifiche...
pier_IP
Prode Principiante
Messaggi: 51
Iscrizione: sabato 17 ottobre 2009, 10:34
Contatti:

Re: [PHP] Chiamare una variabile esterna all'interno di un return in una funzione

Messaggio da pier_IP »

Mmm... Adesso mi viene in mente che..
Potresti creare una classe che abbia come metodo gruppo($titolo, $colore, $bordo) e come campo $width

Codice: Seleziona tutto

class Gruppo{
    public $width = 162;
    public function gruppo($titolo, $colore, $bordo){
        // la tua funzione
    }
}
Lo sconveniente e' che dovresti comunque modificare le chiamate alla funzione, perche' devi creare l'oggetto.
$group = new Gruppo();
$group->gruppo($titolo, $colore, $bordo);
Aiuto utenti linux, esercizi svolti di matematica e teoria (statistica e analisi), strumenti matematici vari (scomposizione fattori primi, permutazioni, ...), progetti software didattici con documentazioni. Tutto qui : http://pierprogramm.altervista.org/wordpress
afullo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 622
Iscrizione: venerdì 5 settembre 2008, 0:34
Località: Almese (TO)
Contatti:

Re: [PHP] Chiamare una variabile esterna all'interno di un return in una funzione

Messaggio da afullo »

Qui mi hanno proposto una soluzione con global che funziona, o perlomeno sembra funzionare:

http://forum.html.it/forum/showthread.p ... id=1471385

Grazie per il supporto comunque, terrò conto delle soluzioni da te proposte, visto che mi è anche stato detto che le variabili globali andrebbero utilizzate il meno possibile, per cui nel caso dovessi fare una cosa da zero potrei valutare di utilizzare un altro modo, qui era solo per evitare di andare a modificare anche altrove più e più richiami... :)
pygimi
Prode Principiante
Messaggi: 3
Iscrizione: lunedì 1 agosto 2011, 20:28

Re: [PHP] Chiamare una variabile esterna all'interno di un return in una funzione

Messaggio da pygimi »

afullo ha scritto: Qui mi hanno proposto una soluzione con global che funziona, o perlomeno sembra funzionare:

http://forum.html.it/forum/showthread.p ... id=1471385

Grazie per il supporto comunque, terrò conto delle soluzioni da te proposte, visto che mi è anche stato detto che le variabili globali andrebbero utilizzate il meno possibile, per cui nel caso dovessi fare una cosa da zero potrei valutare di utilizzare un altro modo, qui era solo per evitare di andare a modificare anche altrove più e più richiami... :)
IEP ti stavo per rispondere poi ho visto questo intervento.
Rendere una variabile globale è il metodo più veloce, ma sicuramente meno raffinato.

L'idea della classe è carina  ;)
gibux
Prode Principiante
Messaggi: 230
Iscrizione: giovedì 12 novembre 2009, 14:22

Re: [PHP] Chiamare una variabile esterna all'interno di un return in una funzione

Messaggio da gibux »

Se metto un parametro in più nella funzione, però, ogni volta che la richiamo gliene devo dare 4, non 3, per cui dovrei andare a modificare tutti i richiami ovunque li abbia fatti.
Non è del tutto corretto: se tu aggiungi un parametro con default

function gruppo($titolo, $colore, $bordo,$width="")

nessuno si accorgerebbe della modifica e a te basterebbe testare nella function il caso:
se $width è diverso da "" allora uso il suo valore
else come prima

così non usi variabili globali...
pier_IP
Prode Principiante
Messaggi: 51
Iscrizione: sabato 17 ottobre 2009, 10:34
Contatti:

Re: [PHP] Chiamare una variabile esterna all'interno di un return in una funzione

Messaggio da pier_IP »

gibux ha scritto:
Se metto un parametro in più nella funzione, però, ogni volta che la richiamo gliene devo dare 4, non 3, per cui dovrei andare a modificare tutti i richiami ovunque li abbia fatti.
Non è del tutto corretto: se tu aggiungi un parametro con default

function gruppo($titolo, $colore, $bordo,$width="")

nessuno si accorgerebbe della modifica e a te basterebbe testare nella function il caso:
se $width è diverso da "" allora uso il suo valore
else come prima

così non usi variabili globali...
I parametri opzionali di PHP ma certo!! Mi confondevo con il Java che non li ha.
Ti consiglio di fare come dice gibux
Aiuto utenti linux, esercizi svolti di matematica e teoria (statistica e analisi), strumenti matematici vari (scomposizione fattori primi, permutazioni, ...), progetti software didattici con documentazioni. Tutto qui : http://pierprogramm.altervista.org/wordpress
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti