PHP – Как работает сериализация / несериализация объекта?

Я читал сериализованные / unserialize концепции PHP. Мне было интересно, как они хранятся в файловой системе / db? Я думаю, это в двоичном формате. Однако интересно, как хранится весь класс? Я понял, что данные в элементе данных могут быть сохранены, но как методы или сохранены?

Я имею в виду, как PHP знает, какой код написан внутри функции say, someFunc ()

$obj = new ClassName(); $obj->someFunc(); $serial = serialize($obj); $unserialobj = unserialize($serial); $unserialobj->someFunc(); 

PHP может знать, что делать в строке # 2, но как он знает, что делать в строке # 5, которая является неэриализованным объектом? он также сохраняет код?

PHP может знать, что делать в строке # 2, но как он знает, что делать в строке # 5, которая является неэриализованным объектом? он также сохраняет код?

Да, serialize() сохранит информацию о классе, который этот объект является экземпляром, наряду с его состоянием, поэтому, когда вы несериализуете, вы получаете экземпляр этого класса, который в этом случае является ClassName .

При сериализации объекта PHP сохраняет только текущее состояние объекта, то есть его значения свойств. Он не сериализует свои методы. Соответствующий класс должен быть загружен в память во время несериализации. PHP будет восстанавливать состояние объекта из сериализованной строки и передавать остальную часть информации (структуру и методы) из класса с тем же именем.

Это простой пример для понимания сериализации и нессериализации объекта в php. мы скрываем объект в строку с использованием сериализации и используем текущий статус текущего объекта (с заданными значениями) после несериализации на другой странице.

c.php

 <?php class A { public $one ; public function A($val) { $this->one=$val; // echo $this->one; } function display(){ echo $this->one; } } ?> 

c.php файл имеет класс с именем A.
a.php

 <? require_once "c.php"; $ob= new A('by Pankaj Raghuwanshi : Object Searlization.'); $ob->display(); // Output is: by Pankaj Raghuwanshi : Object Searlization. $s = serialize($ob); // echo $s will show a string of an object ?> <br><A href='b.php?s=<?=$s;?>'>B-file</a> 

Мы сериализуем преобразование этого объекта в строку и передаем эту строку на другую страницу методом get.

Примечание. Мы можем передать эту строку одной странице на другую страницу с помощью различных методов, таких как использование сеанса, мы можем сохранить в БД и извлечь другую страницу, сохранить в текстовый файл.

Мы будем исключать этот объект для другого имени файла b.php

b.php

 <? require_once "c.php"; $ob = unserialize($_GET[s]); $ob->display(); // Output is: by Pankaj Raghuwanshi : Object Searlization. ?> 

после unserialization, объект, показывающий такое же поведение, как файл a.php, и присваивание значения a.php все еще находится в памяти объекта. если мы будем отказывать этот объект после многих запросов HTTP. Объект будет сохранять все значения назначения в своей памяти.