Конечно, можно сериализовать и экземпляр класса, который содержит свойство const
.
Но это свойство const
не будет присутствовать в сериализованной строке : в этом нет необходимости, так как она константа: когда строка будет не сериализована, она будет экземпляром вашего класса и, следовательно, будет иметь это свойство константы из определения класса.
Сериализация экземпляра вашего класса:
class A {
const XXX = 'aaa';
function test() {
echo A::XXX;
}
}
$a = new A();
$str = serialize($a);
var_dump($str);
Вы получите:
string 'O:1:"A":0:{}' (length=12)
Константа отсутствует в сериализованной строке.
Десериализация работает:
$b = unserialize($str);
var_dump($b);
И, если вы попытаетесь вызвать метод для этого $b
объекта, получится при десериализации:
$b->test();
Константа действительно найдено , так как это в определении вашего класса, и вы получите:
aaa