@ff0xff

Почему не проходит сериализация?

Почему свойство public_key не серилизуется?
Мне надо серелизовать класс B который расширяется с помощью класса А
Но свойство public_key почему то не хочет серелизвоатся, почему у него такое поведение?
class A{
    private $public_key = '';

    protected function __construct($public_key)
    {
        $this->public_key = $public_key;
    }
    public function __sleep()
    {
        return array('public_key');
    }
}

class B extends A{
    public function __construct($public_key = 'hello')
    {
        parent::__construct($public_key);
    }
}

$b = new B();
var_dump($b);
var_dump(unserialize(serialize($b)));


object(B)#1 (1) {
["public_key":"A":private]=>
string(5) "hello"
}
PHP Notice: serialize(): "public_key" returned as member variable from __sleep() but does not exist in /home/master/test.php on line 24
object(B)#2 (2) {
["public_key":"A":private]=>
string(0) ""
["public_key"]=>
NULL
}
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
TommyV888
@TommyV888 Куратор тега PHP
-
Потому что у вас public_key private. Приватные свойства и методы не наследуются, замените на protected
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы