Пожалуйста, рассмотрите следующий пример кода:
<?php class a { function b() {} } $r=new ReflectionMethod(new a, "b"); var_dump($r->getParameters()); $s=serialize($r); $r=unserialize($s); var_dump($r->getParameters()); ?>
Это дает следующий результат:
array(0) { } Fatal error: ReflectionFunctionAbstract::getParameters() [<a href='reflectionfunctionabstract.getparameters'>reflectionfunctionabstract.getparameters</a>]: Internal error: Failed to retrieve the reflection object in [...]test.php on line 13
Вопрос стоит, есть ли способ правильно сериализовать / unserialize объекты Reflection в PHP?
Спасибо.
с http://bugs.php.net/bug.php?id=30324
Сериализация не работает с виртуальными свойствами, и эта проблема обычно возникает с внутренними классами.
Возможно, так обстоит дело с этим методом. Однако я не уверен, что документация не ясна. http://in3.php.net/manual/en/reflectionfunctionabstract.getparameters.php
Используйте JMS Serializer для сериализации частных и защищенных свойств, а также виртуальных свойств с использованием методов.