Re: [RFC] Lazy Objects
| From: | Valentin Udaltsov | Date: | Tue, 04 Jun 2024 14:55:25 +0000 |
| Subject: | Re: [RFC] Lazy Objects | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-123505@lists.php.net to get a copy of this message | ||
On June, 4 at 15:32, Nicolas Grekas <nicolas.grekas+php@gmail.com> wrote:
> Dear all,
>
> Arnaud and I are pleased to share with you the RFC we've been shaping for
> over a year to add native support for lazy objects to PHP.
>
> Please find all the details here:
> https://wiki.php.net/rfc/lazy-objects
>
> We look forward to your thoughts and feedback.
>
> Cheers,
> Nicolas and Arnaud
>
Hi, Nicolas and Arnaud!
I like the idea, thank you for the RFC!
Here are some initial thoughts and questions:
1. It doesn't seem right that calling
ReflectionLazyObject::makeLazyGhost
has an implicit side effect on $instance and returns reflection. It does
2 things and thus breaks the SRP. Having smth like `$lazyGhost = new
ReflectionClass(MyClass)->newLazyGhost($initializer)` and/or
ReflectionLazyObject::makeLazy($object, $initializer): void seems better.
2. If ReflectionLazyObject extends ReflectionObject, then how `new
ReflectionLazyObject($object)` will work for non-lazy objects? Will it
throw?
3. Is extending ReflectionObject really necessary? What about creating
ReflectionLazyObject as a standalone class without abusing inheritance?
Or simply adding methods to ReflectionObject / ReflectionClass?
4. The RFC says that Virtual state-proxies are necessary because of
circular references. It's difficult to accept this reasoning, because using
circular references is a bad practice and the given example is something I
try to avoid by all means in my code.
--
Best regards,
Valentin