Почему свойство 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
}