Простой пример:
abstract class Foo {}
unserialize('O:3:"Foo":0:{}');
дает :
Fatal error: Uncaught Error: Cannot instantiate abstract class Foo in /in/A4TCW:4 Stack trace:
#0 /in/A4TCW(4): unserialize('O:3:"Foo":0:{}')
#1 {main} thrown in /in/A4TCW on line 4
Не имеет значения, является ли это корневым объектом или его свойством:
abstract class Foo {}
class Bar extends Foo {}
unserialize('O:3:"Bar":1:{s:1:"a";O:3:"Foo":0:{}}');
вы получаете тот же результат :
Fatal error: Uncaught Error: Cannot instantiate abstract class Foo in /in/ZkdMk:5
Stack trace:
#0 /in/ZkdMk(5): unserialize('O:3:"Bar":1:{s:...')
#1 {main}
thrown in /in/ZkdMk on line 5
Несериализация чего-то, что просто расширяет абстрактный класс, не является проблемой и не является вашей цитатойпредлагает.
abstract class Foo {}
class Bar extends Foo {}
unserialize('O:3:"Bar":0:{}');
отлично работает .