Skip to content

Commit a217b30

Browse files
minor #47672 Leverage First-class callable syntax (tigitz)
This PR was merged into the 6.2 branch. Discussion ---------- Leverage First-class callable syntax | Q | A | ------------- | --- | Branch? | 6.2 | Bug fix? | no | New feature? | no | Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tickets | - | License | MIT | Doc PR | - ### Rationale https://wiki.php.net/rfc/first_class_callable_syntax Mainly: > The advantage is that the new syntax is accessible to static analysis, and respects the scope at the point where the callable is created. I'd argue that it also improves readability and IDE color syntax also helps: ![image](https://user-images.githubusercontent.com/1524501/191912084-7ee933c5-dda1-4176-86f1-cd6511c58aa4.png) I've manually reviewed each changes and discarded some of them where `[Foo::class, 'method']` was intended to be tested with this specific syntax Commits ------- 26d9ce9520 Leverage First-class callable syntax
2 parents 2e28c56 + d215386 commit a217b30

File tree

4 files changed

+26
-15
lines changed

4 files changed

+26
-15
lines changed

Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ protected function setUp(): void
3535

3636
public function testSignature1()
3737
{
38-
$arguments = $this->factory->createArgumentMetadata([$this, 'signature1']);
38+
$arguments = $this->factory->createArgumentMetadata($this->signature1(...));
3939

4040
$this->assertEquals([
4141
new ArgumentMetadata('foo', self::class, false, false, null),
@@ -46,7 +46,7 @@ public function testSignature1()
4646

4747
public function testSignature2()
4848
{
49-
$arguments = $this->factory->createArgumentMetadata([$this, 'signature2']);
49+
$arguments = $this->factory->createArgumentMetadata($this->signature2(...));
5050

5151
$this->assertEquals([
5252
new ArgumentMetadata('foo', self::class, false, true, null, true),
@@ -57,7 +57,7 @@ public function testSignature2()
5757

5858
public function testSignature3()
5959
{
60-
$arguments = $this->factory->createArgumentMetadata([$this, 'signature3']);
60+
$arguments = $this->factory->createArgumentMetadata($this->signature3(...));
6161

6262
$this->assertEquals([
6363
new ArgumentMetadata('bar', FakeClassThatDoesNotExist::class, false, false, null),
@@ -67,7 +67,7 @@ public function testSignature3()
6767

6868
public function testSignature4()
6969
{
70-
$arguments = $this->factory->createArgumentMetadata([$this, 'signature4']);
70+
$arguments = $this->factory->createArgumentMetadata($this->signature4(...));
7171

7272
$this->assertEquals([
7373
new ArgumentMetadata('foo', null, false, true, 'default'),
@@ -78,7 +78,7 @@ public function testSignature4()
7878

7979
public function testSignature5()
8080
{
81-
$arguments = $this->factory->createArgumentMetadata([$this, 'signature5']);
81+
$arguments = $this->factory->createArgumentMetadata($this->signature5(...));
8282

8383
$this->assertEquals([
8484
new ArgumentMetadata('foo', 'array', false, true, null, true),

Tests/DataCollector/RequestDataCollectorTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,17 @@ function () { return 'foo'; },
122122
],
123123
],
124124

125+
[
126+
'First-class callable closure',
127+
$this->testControllerInspection(...),
128+
[
129+
'class' => self::class,
130+
'method' => 'testControllerInspection',
131+
'file' => __FILE__,
132+
'line' => $r1->getStartLine(),
133+
],
134+
],
135+
125136
[
126137
'Static callback as string',
127138
__NAMESPACE__.'\RequestDataCollectorTest::staticControllerMethod',

Tests/EventListener/ResponseListenerTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ protected function setUp(): void
3030
{
3131
$this->dispatcher = new EventDispatcher();
3232
$listener = new ResponseListener('UTF-8');
33-
$this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
33+
$this->dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...));
3434

3535
$this->kernel = $this->createMock(HttpKernelInterface::class);
3636
}
@@ -54,7 +54,7 @@ public function testFilterDoesNothingForSubRequests()
5454
public function testFilterSetsNonDefaultCharsetIfNotOverridden()
5555
{
5656
$listener = new ResponseListener('ISO-8859-15');
57-
$this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
57+
$this->dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...), 1);
5858

5959
$response = new Response('foo');
6060

@@ -67,7 +67,7 @@ public function testFilterSetsNonDefaultCharsetIfNotOverridden()
6767
public function testFilterDoesNothingIfCharsetIsOverridden()
6868
{
6969
$listener = new ResponseListener('ISO-8859-15');
70-
$this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
70+
$this->dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...), 1);
7171

7272
$response = new Response('foo');
7373
$response->setCharset('ISO-8859-1');
@@ -81,7 +81,7 @@ public function testFilterDoesNothingIfCharsetIsOverridden()
8181
public function testFiltersSetsNonDefaultCharsetIfNotOverriddenOnNonTextContentType()
8282
{
8383
$listener = new ResponseListener('ISO-8859-15');
84-
$this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
84+
$this->dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...), 1);
8585

8686
$response = new Response('foo');
8787
$request = Request::create('/');
@@ -96,7 +96,7 @@ public function testFiltersSetsNonDefaultCharsetIfNotOverriddenOnNonTextContentT
9696
public function testSetContentLanguageHeaderWhenEmptyAndAtLeast2EnabledLocalesAreConfigured()
9797
{
9898
$listener = new ResponseListener('ISO-8859-15', true, ['fr', 'en']);
99-
$this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
99+
$this->dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...), 1);
100100

101101
$response = new Response('content');
102102
$request = Request::create('/');
@@ -111,7 +111,7 @@ public function testSetContentLanguageHeaderWhenEmptyAndAtLeast2EnabledLocalesAr
111111
public function testNotOverrideContentLanguageHeaderWhenNotEmpty()
112112
{
113113
$listener = new ResponseListener('ISO-8859-15', true, ['de']);
114-
$this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
114+
$this->dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...), 1);
115115

116116
$response = new Response('content');
117117
$response->headers->set('Content-Language', 'mi, en');
@@ -127,7 +127,7 @@ public function testNotOverrideContentLanguageHeaderWhenNotEmpty()
127127
public function testNotSetContentLanguageHeaderWhenDisabled()
128128
{
129129
$listener = new ResponseListener('ISO-8859-15', false);
130-
$this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
130+
$this->dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...), 1);
131131

132132
$response = new Response('content');
133133
$request = Request::create('/');

Tests/EventListener/SurrogateListenerTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public function testFilterDoesNothingForSubRequests()
3030
$response = new Response('foo <esi:include src="" />');
3131
$listener = new SurrogateListener(new Esi());
3232

33-
$dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
33+
$dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...));
3434
$event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::SUB_REQUEST, $response);
3535
$dispatcher->dispatch($event, KernelEvents::RESPONSE);
3636

@@ -44,7 +44,7 @@ public function testFilterWhenThereIsSomeEsiIncludes()
4444
$response = new Response('foo <esi:include src="" />');
4545
$listener = new SurrogateListener(new Esi());
4646

47-
$dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
47+
$dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...));
4848
$event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MAIN_REQUEST, $response);
4949
$dispatcher->dispatch($event, KernelEvents::RESPONSE);
5050

@@ -58,7 +58,7 @@ public function testFilterWhenThereIsNoEsiIncludes()
5858
$response = new Response('foo');
5959
$listener = new SurrogateListener(new Esi());
6060

61-
$dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
61+
$dispatcher->addListener(KernelEvents::RESPONSE, $listener->onKernelResponse(...));
6262
$event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MAIN_REQUEST, $response);
6363
$dispatcher->dispatch($event, KernelEvents::RESPONSE);
6464

0 commit comments

Comments
 (0)