UNPKG

manual-php

Version:
53 lines (38 loc) 1.29 kB
# 对象序列化 所有 PHP 里面的值都可以使用函数 `serialize()` 来返回一个包含字节流的字符串来表示,而 `unserialize()` 函数则能够重新把字符串变回 PHP 原来的值。序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。为了能够 `unserialize()` 一个对象,这个对象的类必须已经定义过。 ```php <?php require __DIR__ . '/Foo.php'; $foo = new Foo(); file_put_contents(__DIR__ . '/data.txt', serialize($foo)); ``` 上例中的 `Foo.php` 文件内容: ```php <?php class Foo { /** * Just a test property. * * @var string */ public string $property = 'foo'; /** * Return the specified property. * * @param void * @return string */ public function method(): string { return $this->property; } } ``` 如果要想在另外一个文件中反序列化一个对象,这个对象的类必须在解序列化之前定义,可以通过包含一个定义该类的文件或使用函数 `spl_autoload_register()` 来实现。 ```php <?php require __DIR__ . '/Foo.php'; $foo = unserialize(file_get_contents(__DIR__ . '/data.txt')); var_dump($foo->method()); // string(3) "foo" ```