Methode __serialize
De magische methode __serialize wordt aangeroepen bij de serialisatie van een object
door de functie serialize. Het moet een array met gegevens retourneren die
geserialiseerd zullen worden. Deze methode is geïntroduceerd in PHP 7.4 als een alternatief voor
de methode __sleep met een flexibelere beheersing van het serialisatieproces.
Syntaxis
public function __serialize(): array
Voorbeeld
Laten we een klasse maken met de methode __serialize, die zal bepalen
welke eigenschappen van het object geserialiseerd moeten worden:
<?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 de code-uitvoering:
'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
Laten we het verschil aantonen 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 de code-uitvoering:
'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;}'
Zie ook
-
de functie
serialize,
die een waarde omzet in een opgeslagen string