var_export

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

var_exportВыводит или возвращает интерпретируемое строковое представление переменной

Описание

var_export ( mixed $value , bool $return = false ) : string|null

var_export() возвращает структурированную информацию о данной переменной. Функция аналогична var_dump() за одним исключением: возвращаемое представление является полноценным PHP-кодом.

Список параметров

value

Переменная, которую необходимо экспортировать.

return

Если передано и значение равно true, var_export() вернет представление переменной вместо его вывода.

Возвращаемые значения

Возвращает представление переменной, если параметр return передан и равен true. В противном случае функция возвращает null.

Примечания

Замечание:

При использовании параметра return данная функция использует внутреннюю буферизацию вывода, поэтому она не может быть использована внутри callback-функции ob_start().

Список изменений

Версия Описание
7.3.0 Теперь объекты stdClass экспортируются в виде массива, приведенного к объекту (массив (object) array( ... )), вместо использования несуществующего метода stdClass::__setState(). Практический эффект заключается в том, что теперь stdClass можно экспортировать, и полученный код будет работать даже в более ранних версиях PHP.

Примеры

Пример #1 Примеры использования var_export()

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

Результат выполнения данного примера:

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

$b 
3.1;
$v var_export($btrue);
echo 
$v;

?>

Результат выполнения данного примера:

3.1

Пример #2 Экспорт stdClass с PHP 7.3.0

<?php
$person 
= new stdClass;
$person->name 'ElePHPant ElePHPantsdotter';
$person->website 'https://php.net/elephpant.php';

var_export($person);

Результат выполнения данного примера:

(object) array(
   'name' => 'ElePHPant ElePHPantsdotter',
   'website' => 'https://php.net/elephpant.php',
)

Пример #3 Экспорт классов c PHP 5.1.0

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

Результат выполнения данного примера:

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

Пример #4 Использование __set_state() (c 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($atrue) . ';'); // $b = A::__set_state(array(
                                            //    'var1' => 5,
                                            //    'var2' => 'foo',
                                            // ));
var_dump($b);
?>

Результат выполнения данного примера:

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

Примечания

Замечание:

Переменные типа resource не могут быть экспортированы с помощью этой функции.

Замечание:

var_export() не обрабатывает циклические ссылки, так как было бы почти невозможно сгенерировать интерпретируемый PHP-код для такого случая. Если необходимо производить какие-то действия с полным представлением массива или объекта, используйте функцию serialize().

Внимание

При экспорте объектов функцией var_export(), ведущий обратный слеш не добавляется в имя класса с указанным пространством имен для наилучшей обратной совместимости.

Замечание:

Для того, чтобы можно было использовать сгенерированный var_export() PHP-код, необходимо, чтобы все затронутые объекты реализовывали магический метод __set_state. Единственное исключение — stdClass, который экспортируется с использованием массива, приведенного к объекту.

Смотрите также

  • print_r() - Выводит удобочитаемую информацию о переменной
  • serialize() - Генерирует пригодное для хранения представление переменной
  • var_dump() - Выводит информацию о переменной