Серіалізация об`єктів в php.

Серіалізация об`єктів в PHP.

Привіт всім! Сьогодні ми поговоримо про таку тему, як сериализация об`єктів в PHP.

Навіщо це потрібно?

Якщо ви створюєте клієнт-серверне додаток, де захочете обмінюватися інформацією зі скриптом, то тут і стане в нагоді сериализация. Потрібна вона для того, щоб перетворити звичайний php об`єкт в рядок, яку зможе зрозуміти скрипт.

приклад використання

Для того, щоб конвертувати об`єкт в рядок, використовується функція serialize (), а для того, щоб перетворити його назад - unserialize ().

Як приклад наведемо клас User і створимо його об`єкт.

lt ;?php
classUser{
private $ name-
private $ role-

publicfunction __construct($ name, $ role){
$ this
-gt;name = $ name-
$ this
-gt;role = $ role-
}

publicfunction changeName($ name){
$ this
-gt;name = $ name-
}

publicfunction changeRole($ role){
$ this
-gt;role = $ role-
}

publicfunction getName(){
return $ this-gt;name-
}

publicfunction getRole(){
return $ this-gt;role-
}

$ user
=newUser(`John`,1) -
$ string
= serialize($ user) -
echo $ string
-
}
?gt;



Ми отримаємо рядок, що зберігає наш об`єкт. Тепер ми можемо передати її, наприклад, скрипту.

Тепер давайте перетворимо нашу рядок назад в наш об`єкт.

$ user = unserialize($ string) -


Перевіримо, що наш об`єкт працює

echo $ user-gt;getName() -// поверне `John`

Якщо ви подивіться на рядок, яку сформувала функція serialize, то помітите, що там відсутні назви методів. Так що, щоб все працювало, слід підключати клас раніше, ніж викликається функція unserialize.

lt ;?php
spl_autoload_register
(function($ name){
require_once $ name
.`.php`-
}) -

$ user
= unserialize($ string) -
?gt;

Магічні методи __sleep і __wakeup

Якщо ви хочете, щоб перед тим, як об`єкт перетвориться в рядок, або перед тим, як об`єкт утворюється з рядка, що щось відбувалося, то використовуйте магічні методи __sleep і __wakeup.

наприклад

lt ;?php
classUser{
// ...

publicfunction __sleep(){
echo
`Починаємо конвертувати об`єкт в рядок
`
-
return[`Name`,`Role`] -
}

publicfunction __wakeup(){
echo
`
Починаємо конвертувати рядок в об`єкт `
-
}
}
?gt;

Зауважте, що в методі __sleep ви зобов`язані повернути масив, що містить назви полів, які повинні бути включені в рядок. Таким чином, ви можете виключити поля, які вам не потрібні в результуючому рядку.

Отже, на цьому все. Дякую за увагу і вдалого кодинга!

Поділися в соціальних мережах:

Схожі
Створення движка на mvc. Робимо можливість редагування і видалення користувачів.Створення движка на mvc. Робимо можливість редагування і видалення користувачів.
Модифікатори доступу в phpМодифікатори доступу в php
Ооп проти процедурного підходу.Ооп проти процедурного підходу.
Клас для відправки e-mail на phpКлас для відправки e-mail на php
Вивчаємо sass. Математичні операції.Вивчаємо sass. Математичні операції.
Метод tostring () в phpМетод tostring () в php
Reflection api. Reflectionclass.Reflection api. Reflectionclass.
Об`єкт object в jаvascriptОб`єкт object в jаvascript
Поради щодо використання умов в php.Поради щодо використання умов в php.
Створення движка на mvc. Начинам робити систему розподілу прав користувачів.Створення движка на mvc. Начинам робити систему розподілу прав користувачів.
» » Серіалізация об`єктів в php.