Переизобретая __toArray()
Пытаясь изобрести свой метод toArray()1 для сериализации объектов в ассоциативный массив наткнулся на пару интересных моментов. Методы method_exists и is_callable Можно предположить, что is_callable будет возвращать true для всех методов где method_exists возращает true. Но в действительности это не так. var_dump(is_callable($class, '__toString')); // bool(false) var_dump(method_exists($class, '__toString')); // bool(true) Доступ к закрытым и защищенным свойствам И существование документированной фичи, что при явном приведении типа объекта к массиву, можно получить содержимое скрытых свойств....