Hi

On 2026-07-04 11:02, Nicolas Grekas wrote:
I'd also be fine with a limited version of this RFC that'd remove the
serialize-related part and that'd keep only the proposed Reflection-based API. This is the very core where engine support is needed. The serialize
part would make attributes work seamlessly with backends that use
serialize(), but my use cases build on the deepclone/VarExporter
extension/components, and those need only reflection.

In case that can help bring a broader consensus.

As indicated in my previous email, I'm also concerned about the Reflection-based API and don't consider it good language design. Given that the Reflection-based API needs Reflection and the specific constraint of “the serialized payload is only valid until the next deployment”, I also don't see how it would enable anything that you can't already do.

- For public first class callables, just generate a first class callable. - For private and protected ones generate `(new ReflectionMethod($class, $method))->getClosure()`. - For full Closures generate the the appropriate Reflection chain accessing the right Closure, e.g. `(new ReflectionProperty($class, $method))->getAttributes()[$attrNo]->getArguments()[$argumentNo]`.

The proposed new API would effectively do the same, and then add the extra safety checks that you, from what I understand, wouldn't need for this use case.

Best regards
Tim Düsterhus

Reply via email to