W3docs

var_export()

La funzione var_export() in PHP restituisce una rappresentazione della variabile come codice PHP valido, utile per cache e debug.

Introduzione

var_export() è una funzione PHP integrata che produce una rappresentazione di una variabile come codice PHP valido. A differenza di un semplice print, la string che restituisce è analizzabile: puoi copiarla in un file .php (o passarla a eval()) e ottenere un valore identico. Questo la rende ideale per:

  • Generare file di configurazione o dati in cache — scrivi l'export su disco e usa require in seguito.
  • Ispezionare la struttura esatta di una variabile durante il debug.
  • Acquisire istantanee di valori attesi nei test e nella documentazione.

Questa pagina tratta la sintassi, il flag $return, come viene rappresentato ogni tipo di dato e le differenze tra var_export(), var_dump() e print_r().

Sintassi

var_export(mixed $value, bool $return = false): ?string
ParametroDescrizione
$valueLa variabile o espressione da esportare.
$returnQuando è false (predefinito), la rappresentazione viene stampata direttamente e la funzione restituisce null. Quando è true, la rappresentazione viene restituita come string invece di essere stampata.

L'errore più comune è dimenticare il secondo argomento: $result = var_export($x); lascia $result a null perché l'output è andato direttamente allo stdout. Per catturarlo, passa true.

Esempio di base

php— editable, runs on the server

Qui $var1 è un intero, $var2 una string e $array un array indicizzato. Ogni chiamata restituisce una string che è essa stessa PHP valido:

10
'Hello, world!'
array (
  0 => 'apple',
  1 => 'banana',
  2 => 'cherry',
)

Nota che le stringhe sono racchiuse tra virgolette singole e gli array mantengono le chiavi esplicite — l'output di un array potrebbe essere assegnato direttamente a una variabile.

Come viene rappresentato ogni tipo

<?php
var_export(true);   echo "\n"; // true
var_export(null);   echo "\n"; // NULL
var_export(3.14);   echo "\n"; // 3.14
var_export('a');    echo "\n"; // 'a'

$assoc = ['name' => 'Ann', 'age' => 30];
var_export($assoc); echo "\n";
?>

Output:

true
NULL
3.14
'a'
array (
  'name' => 'Ann',
  'age' => 30,
)

I booleani diventano true/false, null diventa NULL maiuscolo e gli array associativi preservano le loro chiavi string — tutto sintatticamente PHP valido.

Esportazione di oggetti

Per gli oggetti, var_export() emette una chiamata a __set_state() in modo che la struttura possa, in linea di principio, essere ricostruita:

<?php
class Point {
    public int $x = 1;
    public int $y = 2;
}
var_export(new Point());
?>
\Point::__set_state(array(
   'x' => 1,
   'y' => 2,
))

Per ricostruire effettivamente un tale oggetto dall'export, la classe deve definire un metodo statico __set_state(). Senza di esso, la valutazione dell'output genera un errore — quindi per il round-trip degli oggetti, serialize() è solitamente più adatto.

var_export() vs. var_dump() vs. print_r()

FunzioneFormato outputMostra i tipi?String restituibile?PHP valido?
var_export()Codice PHP analizzabileImplicitamenteSì ($return = true)
var_dump()Tipo + valore + lunghezzaSì (esplicito)No (solo stampa)No
print_r()Albero leggibile dall'utenteNoSì (2° argomento)No

Usa var_export() quando hai bisogno di codice da memorizzare o rieseguire, var_dump() quando hai bisogno di tipi e lunghezze di stringhe per il debug, e print_r() per una rapida occhiata leggibile.

Un uso pratico: file di dati in cache

Poiché l'export è PHP valido, puoi persistere dati calcolati e caricarli rapidamente alla richiesta successiva:

<?php
$config = ['debug' => true, 'level' => 3, 'tags' => ['a', 'b']];

// Write a loadable PHP file.
file_put_contents('cache.php', '<?php return ' . var_export($config, true) . ';');

// Later, somewhere else:
$loaded = require 'cache.php';
?>

$loaded è identico all'array $config originale — nessuna analisi di JSON o passaggio di deserializzazione richiesto.

Conclusione

var_export() trasforma una variabile in codice PHP pronto all'uso. Passa $return = true per catturare quel codice come string, ricorda che null viene stampato come NULL e le stringhe sono tra virgolette singole, e usa serialize() quando hai bisogno di round-trip degli oggetti. Per il debug con informazioni sui tipi, confrontala con var_dump() e print_r().

Esercitazione

Pratica
A cosa serve la funzione var_export() in PHP?
A cosa serve la funzione var_export() in PHP?
Was this page helpful?