var_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

var_exportVisualizza o restituisce una variabile in formato stringa

Descrizione

var_export(mixed $expression, bool $return = false): mixed

La funzione var_export() restituisce informazioni strutturate sulla data variabile. E' simile a var_dump() con una differenza: il valore restituito è codice PHP.

Elenco dei parametri

expression

La variabile che si desidera esportare.

return

Se utilizzato ed impostato a true, la funzione var_export() restituisce la rappresentazione della variabile anzichè visualizzarla.

Valori restituiti

Restituisce la rappresentazione della variabile quando il parametro return viene utilizzato ed impostato a true. Altrimenti la funzione restituisce null.

Note

Nota:

Quando il parametro return è utilizzato, questa funzione usa un buffering di output interno, quindi non può essere usata all'interno di una funzione callback ob_start().

Log delle modifiche

Versione Descrizione
5.1.0 Possibilità di esportare classi e array contenenti classi utilizzando il metodo magico __set_state().

Esempi

Example #1 Esempio di utilizzo di var_export()

<?php
$a
= array (1, 2, array ("a", "b", "c"));
var_export($a);
?>

Il precedente esempio visualizzerà:

array (
  0 => 1,
  1 => 2,
  2 =>
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)
<?php

$b
= 3.1;
$v = var_export($b, true);
echo
$v;

?>

Il precedente esempio visualizzerà:

3.1

Example #2 Esportazione classi da PHP 5.1.0

<?php
class A { public $var; }
$a = new A;
$a->var = 5;
var_export($a);
?>

Il precedente esempio visualizzerà:

A::__set_state(array(
   'var' => 5,
))

Example #3 Utilizzo di __set_state() (da PHP 5.1.0)

<?php
class A
{
public
$var1;
public
$var2;

public static function
__set_state($an_array)
{
$obj = new A;
$obj->var1 = $an_array['var1'];
$obj->var2 = $an_array['var2'];
return
$obj;
}
}

$a = new A;
$a->var1 = 5;
$a->var2 = 'foo';

eval(
'$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array(
// 'var1' => 5,
// 'var2' => 'foo',
// ));
var_dump($b);
?>

Il precedente esempio visualizzerà:

object(A)#2 (2) {
  ["var1"]=>
  int(5)
  ["var2"]=>
  string(3) "foo"
}

Note

Nota:

Le variabili di tipo resource, non possono essere esportate da questa funzione.

Nota:

var_export() non gestisce i riferimenti circolari poichè sarebbe quasi impossibile generare codice PHP analizzabile per questo. Se si vuole fare qualcosa con la rappresentazione completa di un array o di un oggetto, utilizzare serialize().

Avviso

Quando var_export() esporta oggetti, il primo backslash non è incluso nel nome della classe delle classi del namespace per massima compatibilità.

Nota:

Per poter valutare il codice PHP generato da var_export(), tutti gli oggetti processati devono implementare il metodo magico __set_state. Notare che StdClass non implementa __set_state().

Vedere anche:

  • print_r() - Stampa informazioni relative al contenuto di una variabile in formato leggibile
  • serialize() - Genera una versione archiviabile del valore
  • var_dump() - Stampa delle informazioni relative ad una variabile