|
автор: хм... (27.11.2004 в 13:21) |
|
| сабж | |
|
|
|
|
|
|
|
для: хм...
(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)
| | Т.е. фактически объекты записываются куда-то (файл, база) как байтовый код? | |
|
|
|
|
|
|
|
для: хм...
(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)
| | какой-то дебильный байт-код... :) | |
|
|
|
|