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 экспортируются в виде массива, приведённого к объекту (массив (object) array( ... )), вместо использования несуществующего метода stdClass::__setState(). Практический эффект заключается в том, что теперь 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(

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

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() - Выводит информацию о переменной
To Top