Skip to content

Commit e2d5ff0

Browse files
committed
Remove static from closures
As per request from @nicolas-grekas. symfony/symfony#49472 (comment)
1 parent 264b60d commit e2d5ff0

18 files changed

+64
-64
lines changed

Dumper/PhpDumper.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public function dump(array $options = []): string|array
244244
if ($this->addGetService) {
245245
$code = preg_replace(
246246
"/(\r?\n\r?\n public function __construct.+?\\{\r?\n) ++([^\r\n]++)/s",
247-
"\n protected \Closure \$getService;$1 \$containerRef = $2\n \$this->getService = static function () use (\$containerRef) { return \$containerRef->get()->getService(...\\func_get_args()); };",
247+
"\n protected \Closure \$getService;$1 \$containerRef = $2\n \$this->getService = function () use (\$containerRef) { return \$containerRef->get()->getService(...\\func_get_args()); };",
248248
$code,
249249
1
250250
);
@@ -941,7 +941,7 @@ protected static function {$methodName}(\$container$lazyInitialization)
941941
$c = implode("\n", array_map(fn ($line) => $line ? ' '.$line : $line, explode("\n", $c)));
942942
$lazyloadInitialization = $definition->isLazy() ? ', $lazyLoad = true' : '';
943943

944-
$c = sprintf(" %s = static function (\$container%s) {\n%s };\n\n return %1\$s(\$container);\n", $factory, $lazyloadInitialization, $c);
944+
$c = sprintf(" %s = function (\$container%s) {\n%s };\n\n return %1\$s(\$container);\n", $factory, $lazyloadInitialization, $c);
945945
}
946946

947947
$code .= $c;
@@ -1545,7 +1545,7 @@ private function addInlineRequires(bool $hasProxyClasses): string
15451545
$code .= "\n include_once __DIR__.'/proxy-classes.php';";
15461546
}
15471547

1548-
return $code ? sprintf("\n \$this->privates['service_container'] = static function (\$container) {%s\n };\n", $code) : '';
1548+
return $code ? sprintf("\n \$this->privates['service_container'] = function (\$container) {%s\n };\n", $code) : '';
15491549
}
15501550

15511551
private function addDefaultParametersMethod(): string
@@ -1831,23 +1831,23 @@ private function dumpValue(mixed $value, bool $interpolate = true): string
18311831
}
18321832
$this->addContainerRef = true;
18331833

1834-
return sprintf("%sstatic function () use (\$containerRef)%s {\n \$container = \$containerRef->get();\n\n %s\n }", $attribute, $returnedType, $code);
1834+
return sprintf("%sfunction () use (\$containerRef)%s {\n \$container = \$containerRef->get();\n\n %s\n }", $attribute, $returnedType, $code);
18351835
}
18361836

18371837
if ($value instanceof IteratorArgument) {
18381838
$operands = [0];
18391839
$code = [];
18401840

18411841
if (!$values = $value->getValues()) {
1842-
$code[] = 'new RewindableGenerator(static function () {';
1842+
$code[] = 'new RewindableGenerator(function () {';
18431843
$code[] = ' return new \EmptyIterator();';
18441844
} else {
18451845
$this->addContainerRef = true;
1846-
$code[] = 'new RewindableGenerator(static function () use ($containerRef) {';
1846+
$code[] = 'new RewindableGenerator(function () use ($containerRef) {';
18471847
$code[] = ' $container = $containerRef->get();';
18481848
$code[] = '';
18491849
$countCode = [];
1850-
$countCode[] = 'static function () use ($containerRef) {';
1850+
$countCode[] = 'function () use ($containerRef) {';
18511851

18521852
foreach ($values as $k => $v) {
18531853
($c = $this->getServiceConditionals($v)) ? $operands[] = "(int) ($c)" : ++$operands[0];

Tests/Fixtures/php/closure.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ protected static function getClosureOfServiceClosureService($container)
6666
{
6767
$containerRef = $container->ref;
6868

69-
return $container->services['closure_of_service_closure'] = #[\Closure(name: 'bar2', class: 'stdClass')] static function () use ($containerRef) {
69+
return $container->services['closure_of_service_closure'] = #[\Closure(name: 'bar2', class: 'stdClass')] function () use ($containerRef) {
7070
$container = $containerRef->get();
7171

7272
return ($container->privates['bar2'] ??= new \stdClass());

Tests/Fixtures/php/services10_as_files.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class getClosureService extends ProjectServiceContainer
3131

3232
$container->services['closure'] = $instance = new \stdClass();
3333

34-
$instance->closures = [#[\Closure(name: 'foo', class: 'FooClass')] static function () use ($containerRef): ?\stdClass {
34+
$instance->closures = [#[\Closure(name: 'foo', class: 'FooClass')] function () use ($containerRef): ?\stdClass {
3535
$container = $containerRef->get();
3636

3737
return ($container->services['foo'] ?? null);

Tests/Fixtures/php/services9_as_files.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ class getFooBarService extends ProjectServiceContainer
319319
*/
320320
public static function do($container, $lazyLoad = true)
321321
{
322-
$container->factories['foo_bar'] = static function ($container) {
322+
$container->factories['foo_bar'] = function ($container) {
323323
return new \Bar\FooClass(($container->services['deprecated_service'] ?? $container->load('getDeprecatedServiceService')));
324324
};
325325

@@ -363,12 +363,12 @@ class getLazyContextService extends ProjectServiceContainer
363363
{
364364
$containerRef = $container->ref;
365365

366-
return $container->services['lazy_context'] = new \LazyContext(new RewindableGenerator(static function () use ($containerRef) {
366+
return $container->services['lazy_context'] = new \LazyContext(new RewindableGenerator(function () use ($containerRef) {
367367
$container = $containerRef->get();
368368

369369
yield 'k1' => ($container->services['foo.baz'] ?? $container->load('getFoo_BazService'));
370370
yield 'k2' => $container;
371-
}, 2), new RewindableGenerator(static function () {
371+
}, 2), new RewindableGenerator(function () {
372372
return new \EmptyIterator();
373373
}, 0));
374374
}
@@ -387,11 +387,11 @@ class getLazyContextIgnoreInvalidRefService extends ProjectServiceContainer
387387
{
388388
$containerRef = $container->ref;
389389

390-
return $container->services['lazy_context_ignore_invalid_ref'] = new \LazyContext(new RewindableGenerator(static function () use ($containerRef) {
390+
return $container->services['lazy_context_ignore_invalid_ref'] = new \LazyContext(new RewindableGenerator(function () use ($containerRef) {
391391
$container = $containerRef->get();
392392

393393
yield 0 => ($container->services['foo.baz'] ?? $container->load('getFoo_BazService'));
394-
}, 1), new RewindableGenerator(static function () {
394+
}, 1), new RewindableGenerator(function () {
395395
return new \EmptyIterator();
396396
}, 0));
397397
}
@@ -455,7 +455,7 @@ class getNonSharedFooService extends ProjectServiceContainer
455455
{
456456
include_once $container->targetDir.''.'/Fixtures/includes/foo.php';
457457

458-
$container->factories['non_shared_foo'] = static function ($container) {
458+
$container->factories['non_shared_foo'] = function ($container) {
459459
return new \Bar\FooClass();
460460
};
461461

@@ -521,7 +521,7 @@ class getTaggedIteratorService extends ProjectServiceContainer
521521
{
522522
$containerRef = $container->ref;
523523

524-
return $container->services['tagged_iterator'] = new \Bar(new RewindableGenerator(static function () use ($containerRef) {
524+
return $container->services['tagged_iterator'] = new \Bar(new RewindableGenerator(function () use ($containerRef) {
525525
$container = $containerRef->get();
526526

527527
yield 0 => ($container->services['foo'] ?? $container->load('getFooService'));

Tests/Fixtures/php/services9_compiled.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ protected static function getFoo_BazService($container)
298298
*/
299299
protected static function getFooBarService($container)
300300
{
301-
$container->factories['foo_bar'] = static function ($container) {
301+
$container->factories['foo_bar'] = function ($container) {
302302
return new \Bar\FooClass(($container->services['deprecated_service'] ?? self::getDeprecatedServiceService($container)));
303303
};
304304

@@ -332,12 +332,12 @@ protected static function getLazyContextService($container)
332332
{
333333
$containerRef = $container->ref;
334334

335-
return $container->services['lazy_context'] = new \LazyContext(new RewindableGenerator(static function () use ($containerRef) {
335+
return $container->services['lazy_context'] = new \LazyContext(new RewindableGenerator(function () use ($containerRef) {
336336
$container = $containerRef->get();
337337

338338
yield 'k1' => ($container->services['foo.baz'] ?? self::getFoo_BazService($container));
339339
yield 'k2' => $container;
340-
}, 2), new RewindableGenerator(static function () {
340+
}, 2), new RewindableGenerator(function () {
341341
return new \EmptyIterator();
342342
}, 0));
343343
}
@@ -351,11 +351,11 @@ protected static function getLazyContextIgnoreInvalidRefService($container)
351351
{
352352
$containerRef = $container->ref;
353353

354-
return $container->services['lazy_context_ignore_invalid_ref'] = new \LazyContext(new RewindableGenerator(static function () use ($containerRef) {
354+
return $container->services['lazy_context_ignore_invalid_ref'] = new \LazyContext(new RewindableGenerator(function () use ($containerRef) {
355355
$container = $containerRef->get();
356356

357357
yield 0 => ($container->services['foo.baz'] ?? self::getFoo_BazService($container));
358-
}, 1), new RewindableGenerator(static function () {
358+
}, 1), new RewindableGenerator(function () {
359359
return new \EmptyIterator();
360360
}, 0));
361361
}
@@ -434,7 +434,7 @@ protected static function getTaggedIteratorService($container)
434434
{
435435
$containerRef = $container->ref;
436436

437-
return $container->services['tagged_iterator'] = new \Bar(new RewindableGenerator(static function () use ($containerRef) {
437+
return $container->services['tagged_iterator'] = new \Bar(new RewindableGenerator(function () use ($containerRef) {
438438
$container = $containerRef->get();
439439

440440
yield 0 => ($container->services['foo'] ?? self::getFooService($container));

Tests/Fixtures/php/services9_inlined_factories.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class ProjectServiceContainer extends Container
8686
'decorated' => 'decorator_service_with_name',
8787
];
8888

89-
$this->privates['service_container'] = static function ($container) {
89+
$this->privates['service_container'] = function ($container) {
9090
include_once $container->targetDir.''.'/Fixtures/includes/foo.php';
9191
};
9292
}
@@ -319,7 +319,7 @@ class ProjectServiceContainer extends Container
319319
*/
320320
protected static function getFooBarService($container)
321321
{
322-
$container->factories['foo_bar'] = static function ($container) {
322+
$container->factories['foo_bar'] = function ($container) {
323323
return new \Bar\FooClass(($container->services['deprecated_service'] ?? self::getDeprecatedServiceService($container)));
324324
};
325325

@@ -355,12 +355,12 @@ class ProjectServiceContainer extends Container
355355

356356
include_once $container->targetDir.''.'/Fixtures/includes/classes.php';
357357

358-
return $container->services['lazy_context'] = new \LazyContext(new RewindableGenerator(static function () use ($containerRef) {
358+
return $container->services['lazy_context'] = new \LazyContext(new RewindableGenerator(function () use ($containerRef) {
359359
$container = $containerRef->get();
360360

361361
yield 'k1' => ($container->services['foo.baz'] ?? self::getFoo_BazService($container));
362362
yield 'k2' => $container;
363-
}, 2), new RewindableGenerator(static function () {
363+
}, 2), new RewindableGenerator(function () {
364364
return new \EmptyIterator();
365365
}, 0));
366366
}
@@ -376,11 +376,11 @@ class ProjectServiceContainer extends Container
376376

377377
include_once $container->targetDir.''.'/Fixtures/includes/classes.php';
378378

379-
return $container->services['lazy_context_ignore_invalid_ref'] = new \LazyContext(new RewindableGenerator(static function () use ($containerRef) {
379+
return $container->services['lazy_context_ignore_invalid_ref'] = new \LazyContext(new RewindableGenerator(function () use ($containerRef) {
380380
$container = $containerRef->get();
381381

382382
yield 0 => ($container->services['foo.baz'] ?? self::getFoo_BazService($container));
383-
}, 1), new RewindableGenerator(static function () {
383+
}, 1), new RewindableGenerator(function () {
384384
return new \EmptyIterator();
385385
}, 0));
386386
}
@@ -429,7 +429,7 @@ class ProjectServiceContainer extends Container
429429
{
430430
include_once $container->targetDir.''.'/Fixtures/includes/foo.php';
431431

432-
$container->factories['non_shared_foo'] = static function ($container) {
432+
$container->factories['non_shared_foo'] = function ($container) {
433433
return new \Bar\FooClass();
434434
};
435435

@@ -475,7 +475,7 @@ class ProjectServiceContainer extends Container
475475
{
476476
$containerRef = $container->ref;
477477

478-
return $container->services['tagged_iterator'] = new \Bar(new RewindableGenerator(static function () use ($containerRef) {
478+
return $container->services['tagged_iterator'] = new \Bar(new RewindableGenerator(function () use ($containerRef) {
479479
$container = $containerRef->get();
480480

481481
yield 0 => ($container->services['foo'] ?? self::getFooService($container));

Tests/Fixtures/php/services9_lazy_inlined_factories.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class ProjectServiceContainer extends Container
4848

4949
$this->aliases = [];
5050

51-
$this->privates['service_container'] = static function ($container) {
51+
$this->privates['service_container'] = function ($container) {
5252
include_once __DIR__.'/proxy-classes.php';
5353
};
5454
}

Tests/Fixtures/php/services_almost_circular_private.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ protected static function getDoctrine_EntityManagerService($container)
201201
$containerRef = $container->ref;
202202

203203
$a = new \stdClass();
204-
$a->resolver = new \stdClass(new RewindableGenerator(static function () use ($containerRef) {
204+
$a->resolver = new \stdClass(new RewindableGenerator(function () use ($containerRef) {
205205
$container = $containerRef->get();
206206

207207
yield 0 => ($container->privates['doctrine.listener'] ?? self::getDoctrine_ListenerService($container));
@@ -528,7 +528,7 @@ protected static function getMailer_TransportService($container)
528528
{
529529
$containerRef = $container->ref;
530530

531-
return $container->privates['mailer.transport'] = (new \FactoryCircular(new RewindableGenerator(static function () use ($containerRef) {
531+
return $container->privates['mailer.transport'] = (new \FactoryCircular(new RewindableGenerator(function () use ($containerRef) {
532532
$container = $containerRef->get();
533533

534534
yield 0 => ($container->privates['mailer.transport_factory.amazon'] ?? self::getMailer_TransportFactory_AmazonService($container));
@@ -559,7 +559,7 @@ protected static function getMailer_TransportFactory_AmazonService($container)
559559
*/
560560
protected static function getMailerInline_MailerService($container)
561561
{
562-
return $container->privates['mailer_inline.mailer'] = new \stdClass((new \FactoryCircular(new RewindableGenerator(static function () {
562+
return $container->privates['mailer_inline.mailer'] = new \stdClass((new \FactoryCircular(new RewindableGenerator(function () {
563563
return new \EmptyIterator();
564564
}, 0)))->create());
565565
}

Tests/Fixtures/php/services_almost_circular_public.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ protected static function getDoctrine_EntityListenerResolverService($container)
275275
{
276276
$containerRef = $container->ref;
277277

278-
return $container->services['doctrine.entity_listener_resolver'] = new \stdClass(new RewindableGenerator(static function () use ($containerRef) {
278+
return $container->services['doctrine.entity_listener_resolver'] = new \stdClass(new RewindableGenerator(function () use ($containerRef) {
279279
$container = $containerRef->get();
280280

281281
yield 0 => ($container->services['doctrine.listener'] ?? self::getDoctrine_ListenerService($container));
@@ -356,7 +356,7 @@ protected static function getFoo2Service($container)
356356
*/
357357
protected static function getFoo4Service($container)
358358
{
359-
$container->factories['foo4'] = static function ($container) {
359+
$container->factories['foo4'] = function ($container) {
360360
$instance = new \stdClass();
361361

362362
$instance->foobar = ($container->services['foobar4'] ?? self::getFoobar4Service($container));
@@ -528,7 +528,7 @@ protected static function getMailer_TransportFactoryService($container)
528528
{
529529
$containerRef = $container->ref;
530530

531-
return $container->services['mailer.transport_factory'] = new \FactoryCircular(new RewindableGenerator(static function () use ($containerRef) {
531+
return $container->services['mailer.transport_factory'] = new \FactoryCircular(new RewindableGenerator(function () use ($containerRef) {
532532
$container = $containerRef->get();
533533

534534
yield 0 => ($container->services['mailer.transport_factory.amazon'] ?? self::getMailer_TransportFactory_AmazonService($container));
@@ -559,7 +559,7 @@ protected static function getMailer_TransportFactory_AmazonService($container)
559559
*/
560560
protected static function getMailerInline_TransportFactoryService($container)
561561
{
562-
return $container->services['mailer_inline.transport_factory'] = new \FactoryCircular(new RewindableGenerator(static function () {
562+
return $container->services['mailer_inline.transport_factory'] = new \FactoryCircular(new RewindableGenerator(function () {
563563
return new \EmptyIterator();
564564
}, 0));
565565
}

Tests/Fixtures/php/services_closure_argument_compiled.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ protected static function getServiceClosureService($container)
5959
{
6060
$containerRef = $container->ref;
6161

62-
return $container->services['service_closure'] = new \Bar(#[\Closure(name: 'foo', class: 'Foo')] static function () use ($containerRef) {
62+
return $container->services['service_closure'] = new \Bar(#[\Closure(name: 'foo', class: 'Foo')] function () use ($containerRef) {
6363
$container = $containerRef->get();
6464

6565
return ($container->services['foo'] ??= new \Foo());
@@ -75,7 +75,7 @@ protected static function getServiceClosureInvalidService($container)
7575
{
7676
$containerRef = $container->ref;
7777

78-
return $container->services['service_closure_invalid'] = new \Bar(static function () use ($containerRef) {
78+
return $container->services['service_closure_invalid'] = new \Bar(function () use ($containerRef) {
7979
$container = $containerRef->get();
8080

8181
return NULL;

0 commit comments

Comments
 (0)