Altra piccola domanda di approfondimento

otto9due

Utente Attivo
22 Feb 2014
529
21
28
E' possibile in qualche modo conoscere e verificare il nome di una variabile?
Mi spiego meglio:

Mettiamo che ho un metodo di questo tipo:

PHP:
<?php
class MyClass {
 
        public $prova;
		 
        // funzioni
        public function mioMetodo($prova) {
			$this->prova = 1;
			
			if( $this->prova == 1 ){
				
			$test = 'Il nome della variabile è $test';	
			
			return ( $test );	
			
			}else{
			
			$test2 = 'Il nome della variabile è $test2';	
			
			return ( $test2 );
			
			}

        }
 
}
?>
Ora io vorrei capire se c'è un modo, ricevendo il return di questo metodo, per stabilire se il metodo mi ha restituito $test o $test1 senza verificare però il tipo ( cioè se è un'array o una stringa o un'intero ecc. ) solo dal nome della variabile restituita. E' possibile?
 

marino51

Utente Attivo
28 Feb 2013
2.927
166
63
Lombardia
mi viene in mente solo un metodo implicito
PHP:
<?php
$a = mioMetodo(2); ShowVar($a);
$b = mioMetodo(); ShowVar($b);

function mioMetodo($provami=1)
	{
	$prova = $provami;

	if( $prova == 1 )
		{
		$miaVar['test1'] = $prova; 
		}
	else
		{
		$miaVar['test2'] = $prova;    
		}
	return $miaVar;
	}

function ShowVar($x)
	{
	while( list($chiave, $valore)=each($x) )
		{
		echo $chiave . " -> " . $valore . "<br />";

		${$chiave}=trim(strip_tags($valore));

		echo $chiave . " -> " . ${$chiave} . "<br />"; 
		}

	if (!empty($test1)) echo "test1 -> " . $test1 . "<br /> <br />"; 
	if (!empty($test2)) echo "test2 -> " . $test2 . "<br /> <br />"; 
	}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
non capisco a cosa ti serva, ma con un echo vedi il nome della variabile
scusa non uso il metodo delle classi, ma non sopporto la programmazione ad oggetti (mi sta sul ...), ma comunque il risultato è lo stesso
PHP:
<?php
function mioMetodo($prova) {
	if($prova == 1 ){
		$test = 'Il nome della variabile è $test';    
		return $test;    
	}else{
		$test2 = 'Il nome della variabile è $test2';    
		return $test2;
	}
}
echo mioMetodo(1)."<br>";//Il nome della variabile è $test
echo mioMetodo(80);//Il nome della variabile è $test2
?>
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Diciamo che nel mio caso posso risolvere verificando il tipo di dato contenuto nel return. Ma In pratica mi serve a questo: ho un metodo che mi restituisce o un'array con dei valori o una stringa. La pagina che lo riceve mostrerà nel caso dell'array un elenco di risultati, nel caso della stringa il suo contenuto. Nel caso dell'array ho impostato un ciclo che la scorra che ovviamente mi da errore se non ha un'array in entrata.


Saluti.
G.G.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
usa is_array
PHP:
<?php
//...
$variabile=mioMetodo($prova);
if(is_array($variabile)){
	//è un array quindi cicli
}else{
	//fai altro
}
//....
?>
ti ricordo che poi hai diversi is_pinco: bool, callable, float...
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Di in questo caso penso di usare questa soluzione. Ho cercato anche online e credo che quello che chiedevo nn esiste.


Saluti.
G.G.