Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: А что такое сериализация и для чего она нужна?
 
 автор: хм...   (27.11.2004 в 13:21)
 
 

сабж

   
 
 автор: cheops   (27.11.2004 в 13:36)   письмо автору
 
   для: хм...   (27.11.2004 в 13:21)
 

Вообще сериализация впервые появилась в объектно-ориентированных библиотеках, (первой была MFC, могу врать), потом сериализация стала появляться в объектно-ориентированных языках (Java). Идея в том, что объекты (ну или массивы) очень сложны по своей структуре и на сохранения его на жёсткий диск перебором каждого элемнта требуется уйма кода - самым простым решением является сохранить его как он есть в памяти, а потом читать его из этого образа - т.е. сохранение оптом так сказать. Это и есть сериализация.
В PHP для этого предназначены функции serialize и unserialize, упаковывающие и распаковывающие массив или объект в текстовую строку.
<?php
  $filename 
"text.txt";
  
$poll[0] = 23;
  
$poll[1] = 45;
  
$poll[2] = 34;
  
$poll[3] = 2;
  
$poll[4] = 12;
  
// Упаковываем массив в строку
  
$strpoll serialize($poll);
  
// Помещаем его в файл
  
$fd fopen($filename,"w+");
  
fwrite($fd,$strpoll);
  
fclose($fd);
?>

Теперь в другом скрипте мы можем открыть созданный файл - прочитать его содержимое и распаковать полученную строку в исходный массив
<?php
  $filename 
"text.txt";
  
// Открываем файл
  
$fd fopen($filename,"r");
  
$bufer fread($fd,filesize($filename));
  
fclose($fd);
  
// Распаковываем строку в массив
  
$poll unserialize($bufer);
  
// Выводим содержимое массива
  
foreach($poll as $value)
  {
    echo 
"\$poll[] = $value <br>";
  }
?>

   
 
 автор: хм...   (27.11.2004 в 21:09)
 
   для: cheops   (27.11.2004 в 13:36)
 

Т.е. фактически объекты записываются куда-то (файл, база) как байтовый код?

   
 
 автор: cheops   (27.11.2004 в 21:29)   письмо автору
 
   для: хм...   (27.11.2004 в 21:09)
 

Практически (в других языках именно так) в PHP это сложно назвать байт-кодом, скорее всего всё хитро упаковывается в строку... смотрите сами сойдёт это под байт-код :))) - массив из четырёх элементов:
a:4:{i:1;i:1;i:2;i:3;i:3;i:2;i:4;i:1;}


PS В принципе при желании это можно и в ручную разобрать, скорее текст-код :)))

   
 
 автор: хм...   (27.11.2004 в 21:39)
 
   для: cheops   (27.11.2004 в 21:29)
 

какой-то дебильный байт-код... :)

   
 
 автор: sedek   (27.11.2004 в 13:42)   письмо автору
 
   для: хм...   (27.11.2004 в 13:21)
 

классная функция!

http://softtime.ru/dic/id_dic=263&id_group=9

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования