, в чем польза и преимущество функции Serialize() в php

#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.