var_export

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

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

Описание

mixed var_export ( mixed $expression [, bool $return = false ] )

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

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

expression

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

return

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

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

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

Примечания

Замечание:

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

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

Версия Описание
5.1.0 Стало возможным экспортировать классы и массивы, содержащие другие классы, используя магический метод __set_state().

Примеры

Пример #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 Экспорт классов в PHP с версии 5.1.0

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

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

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

Пример #3 Использование __set_state() (в 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 не реализует метод __set_state().

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

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