-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy path04-serializable-v2.php
55 lines (44 loc) · 1.34 KB
/
04-serializable-v2.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
namespace MujJmennyProstor;
/**
* Class Osoba - ukázková třída implementující rozhraní Serializable
* @package MujJmennyProstor
*/
class Osoba implements \Serializable{ //TODO: proč je před názvem rozhraní Serializable zpětné lomítko?
public $jmeno;
public $prijmeni;
/**
* String representation of object
* @return string
*/
public function serialize(){
//všechna potřebná data třídy převedeme do pole, které následně převedeme na řetězec
//serializace do indexovaného pole je oproti asociačnímu poli datově úspornější
$data=[
$this->jmeno,
$this->prijmeni
];
return serialize($data);
}
/**
* Constructs the object
* @param string $serialized
* @return void
*/
public function unserialize($serialized){
$data = unserialize($serialized);
list($this->jmeno, $this->prijmeni) = $data;
/*konstrukce list() umožňuje postupně naplnit proměnné z indexovaného pole
$this->jmeno=$data[0];
$this->jmeno=$data[1];
*/
}
}
$osoba = new Osoba();
$osoba->jmeno='Joanne';
$osoba->prijmeni='Rowling';
$serializovanaOsoba = serialize($osoba);
var_dump($serializovanaOsoba);
unset($osoba);
$osoba = unserialize($serializovanaOsoba);
var_dump($osoba);