var_dump в файл расширенная информация о переменной

var_dump штатная функция  входящая в состав PHP (начиная с PHP 4). Что же делает var_dump()? Эта полезная функция означает Variables Dump (склад переменных) и используется для отображения информацию о переменных. Функция часто используется для визуального отображения содержания массива. И не просто данных, входящих в массив (как в случае с функцией print_r()), но и типа данных. Рассмотрим пример:
<?
$var = array("one"=>1, "second"=>true, 3=>"apple", array(1, 2, 3, "a", "b", true, 9.5));
/* переменная $var представляет собой многомерный массив, с довольно странным набором данным; в реальном программировании редко встретишь подобный пример; но мы специально усложняем переменную, чтобы функция var_dump предстала перед нами во всей своей красоте */
var_dump($var);
?>

Результатом работы скрипта станет вывод в браузер исчерпывающей информации о переменной $var:
array(4) {
["one"]=>
int(1)
["second"]=>
bool(true)
[3]=>
string(5) "apple"
[4]=>
array(7) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
string(1) "a"
[4]=>
string(1) "b"
[5]=>
bool(true)
[6]=>
float(9.5)
}
}

Функция сообщила нам что переменная $var является массивом с четырьмя элементами array(4) , первый элемент массива – число  int(1), второй элемент имеет булев тип  bool(true) (то есть может принимать значения true – истинно или false – ложно), третий элемент – строка  string(5) «apple» – обратите внимания в скобках указано количество символов в строке, затем идет четвертый элемент , он, в свою очередь, сам является массивом из семи элементов array(7); в этом массиве можно встретить новый тип – число с плавающей точкой float(9.5).

Такую развернутую и исчерпывающую информацию предоставляет var_dump.
Это безусловно полезно, но некоторую информацию следует хранить вдали от посторонних глаз. Или: что если Вы заходите вести историю – лог подобных данных?

Естественно Вам захочется записать результат работы функции var_dump() в отдельный , доступный только администратору файл.
Напишем скрипт который нам в этом поможет:
<?
echo "Hello!";
$var = array("one"=>1, "second"=>true, 3=>"apple", array(1, 2, 3, "a", "b", true, 9.5));
/* начинаем логировать */
ob_start();
@var_dump($var);
$result = ob_get_clean();
$fp = @fopen("/secret_path/var_log.inc", "a+");
@fwrite($fp, $result."\n");
@fclose();
/* заканчиваем логировать */
echo "Hello!";
?>

Как видно из примера , основная часть Вашего скрипта, та часть в которой Вы выводите пользователю сообщения , такие как Hello! должна находится вне конструкции ob_start() и ob_get_clean(). ob_start – включает буферизацию вывода, ob_get_clean позволяет разместить информацию буфера в переменную $result, после чего удаляет буфер.
Не забудьте , что папка /secret_path/ должна быть закрыта от обычных пользователей. Файл var_log.inc должен быть создан и у скрипта должны быть права на запись в этот файл и в папку /secret_path/ (обычно на файл выставляются права 0666, а на папку 0777).

Опубликовано 11.04.2014 в 12:42 · Автор Вебдизайнеру, сисадмину, вебмастеру · Ссылка
Рубрики: PHP программирование · Теги: , , , , , , , , , , , ,