var_export

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

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

Описание

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

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

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

value

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

return

Со значением true функция var_export() вернёт представление переменной, а не выведет.

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

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

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

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

Примеры

Пример #1 Примеры экспорта переменной функцией var_export()

<?php

$a
= array (1, 2, 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($b, true);
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 Экспорт классов

<?php

class A
{
public
$var;
}

$a = new A();
$a->var = 5;
var_export($a);

?>

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

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

Пример #4 Пример экспорта переменной с обработкой магическим методом __set_state()

<?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);

?>

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

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

Примечания

Замечание:

Функцией невозможно экспортировать переменные с типом resource.

Замечание:

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

Внимание

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

Замечание:

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

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

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