#php
#php
Вопрос:
Я знаю, что она генерирует сохраняемое представление значения и используется для доступа к объектам в файлах php, но что, если я не использую эту функцию при сохранении объектов.
Ответ №1:
Допустим, у вас есть некоторые данные post, но ваша база данных / постоянное хранилище не могут быть изменены для хранения новых данных post в отдельных полях.
Вы могли бы сериализовать свой массив $ _POST и сохранить его в имеющемся у вас постоянном хранилище. Она полезна для создания пользовательских CRUD-приложений. Я обнаружил, что необходимость хранения POST в качестве своего рода «полезной нагрузки» временами бывает весьма неоценимой.
Знание того, что вы можете что-то сделать, не означает, что вы должны использовать это везде.
Ответ №2:
Это легко объясняется чтением официальной страницы PHP, которая гласит:
Генерирует сохраняемое представление значения, это полезно для хранения или передачи значений PHP без потери их типа и структуры.
В принципе, вы можете сериализовать объект, записав строку в файл, а по другому запросу вы можете просто прочитать файл и отменить его сериализацию, чтобы загрузить конечный объект.
Ответ №3:
Когда вы хотите сохранить или отправить данные в «безопасном» формате, сохраняя тип и структуру PHP.
Например, у вас есть строка UTF-8 с текстом на японском языке. Или многомерный массив. Вы можете сохранить ее в текстовый файл или вставить в базу данных.
$array = array( 'key' => 'value', 'other_key' => 'other_value');
file_put_contents( 'array.txt', serialize( $array ) );
Когда вы хотите использовать сохраненные данные, вы можете использовать функцию «несериализовать»:
$contents = file_get_contents( 'array.txt' );
$array = unserialize( $contents );
Вы можете сериализовать значения любого типа PHP, включая объекты, но за исключением типа «ресурс» (подключения к базе данных, обработчики файлов и т.д.)
Когда вы отменяете сериализацию объекта, вы должны убедиться, что его класс был загружен ранее.
Подробнее в руководстве по PHP:http://php.net/serialize
Ответ №4:
Сериализовать означает преобразовать переменные среды выполнения в согласованную форму. Часто это простое строковое или XML-представление сегмента кода.
Использование:
<?php
$user = new UserObjectFromDatabase();
$data = serialize($user);
http_reqeust_send($to = "some remote server", $data);
// the remote server can now use unserialize($data) to re-construct the user object
?>
Ответ №5:
Если вы хотите передать переменную PHP (массив, класс, строку и т.д.) Другому скрипту / базе данных / записать ее в файл, вы сериализуете ее. Предположим, у вас есть небольшой скрипт, который вы хотите запустить несколько раз, и вам нужно место для хранения некоторых данных между запусками скрипта. Вот набросок того, что вы делаете:
if(file_exists($thefile)) {
$data = unserialize(readfile($thefile));
} else {
$data = array(); // or anything
}
// do something with data
$f = fopen($thefile);
fwrite($f, serialize($data));
fclose($f)
Ответ №6:
Вы можете хранить структуру PHP в файле, сеансе или даже базе данных. Я использую ее для кэширования результатов запроса в файле или в memcache.