Skip to content

[VarExporter] Use array<property-name,Closure> for partial initialization of lazy ghost objects #48209

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 14, 2022

Conversation

nicolas-grekas
Copy link
Member

@nicolas-grekas nicolas-grekas commented Nov 13, 2022

Q A
Branch? 6.2
Bug fix? yes
New feature? no
Deprecations? no
Tickets -
License MIT

Lazy ghost objects can be either fully-initialized or partially-initialized: either the lazy-properties are all initialized at once, or they're initialized one-by-one.

In the one-by-one way, the initializer is still one closure for all properties that accepts the property to initialize as argument.

While preparing my talk for SymfonyCon, I realized that it would be better to pass an array of closures instead, keyed by the properties to lazy-initialize.

@nicolas-grekas nicolas-grekas merged commit c6b54c5 into symfony:6.2 Nov 14, 2022
@@ -36,37 +37,34 @@ class LazyObjectState
*/
public int $status = 0;

public function __construct(public \Closure $initializer, $skippedProperties = [])
public function __construct(public readonly \Closure|array $initializer, $skippedProperties = [])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the structure of the array should be documented in phpdoc.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an internal API, the phpdoc is on the public one.

@nicolas-grekas nicolas-grekas deleted the lazy-partial branch November 14, 2022 09:48
@fabpot fabpot mentioned this pull request Nov 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants