Metode __serialize
Die towersmetode __serialize word aangeroep wanneer 'n objek geserialiseer word
deur die funksie serialize. Dit moet 'n skikking van data terugstuur wat
geserialiseer sal word. Hierdie metode het in PHP 7.4 verskyn as 'n alternatief vir
die metode __sleep met meer buigsame beheer oor die serialiseringsproses.
Sintaksis
public function __serialize(): array
Voorbeeld
Kom ons skep 'n klas met die metode __serialize, wat sal bepaal
watter eienskappe van die objek geserialiseer moet word:
<?php
class User {
public $name;
private $password;
public $email;
public function __construct($name, $password, $email) {
$this->name = $name;
$this->password = $password;
$this->email = $email;
}
public function __serialize(): array {
return [
'name' => $this->name,
'email' => $this->email,
'hash' => md5($this->password)
];
}
}
$user = new User('John', 'secret123', 'john@example.com');
echo serialize($user);
?>
Resultaat van die uitvoering van die kode:
'O:4:"User":3:{s:4:"name";s:4:"John";s:5:"email";s:15:"john@example.com";s:4:"hash";s:32:"e5e9fa1ba31ecd1ae84f75caaa474f3a";}'
Voorbeeld
Kom ons demonstreer die verskil tussen __serialize en __sleep:
<?php
class Product {
public $id;
protected $price;
private $discount;
public function __sleep() {
return ['id', 'price'];
}
public function __serialize(): array {
return [
'id' => $this->id,
'price' => $this->price * (1 - $this->discount)
];
}
}
$product = new Product();
$product->id = 100;
$product->price = 50;
$product->discount = 0.1;
echo "Sleep: " . serialize($product) . "\n";
echo "Serialize: " . serialize($product);
?>
Resultaat van die uitvoering van die kode:
'Sleep: O:7:"Product":2:{s:2:"id";i:100;s:5:"price";i:50;}'
'Serialize: O:7:"Product":2:{s:2:"id";i:100;s:5:"price";d:45;}'
Sien ook
-
die funksie
serialize,
wat 'n waarde omskep in 'n stoorbare string