Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb19e1be

Browse files
kevinjhappynicolas-grekas
authored andcommitted
Trigger deprecation notices when inherited class calls parent method but misses adding new arguments
1 parent1a46605 commitb19e1be

File tree

19 files changed

+298
-21
lines changed

19 files changed

+298
-21
lines changed

‎UPGRADE-4.2.md‎

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
UPGRADE FROM 4.1 to 4.2
22
=======================
33

4+
BrowserKit
5+
----------
6+
7+
* The`Client::submit()` method will have a new`$serverParameters` argument in version 5.0, not defining it is deprecated.
8+
49
Cache
510
-----
611

@@ -37,6 +42,16 @@ DoctrineBridge
3742
* The`lazy` attribute on`doctrine.event_listener` tags was removed.
3843
Listeners are now lazy by default. So any`lazy` attributes can safely be removed from those tags.
3944

45+
DomCrawler
46+
----------
47+
48+
* The`Crawler::children()` method will have a new`$selector` argument in version 5.0, not defining it is deprecated.
49+
50+
Finder
51+
------
52+
53+
* The`Finder::sortByName()` method will have a new`$useNaturalSort` argument in version 5.0, not defining it is deprecated.
54+
4055
Form
4156
----
4257

@@ -123,6 +138,11 @@ Messenger
123138
];
124139
```
125140

141+
Monolog
142+
-------
143+
144+
* The methods`DebugProcessor::getLogs()`,`DebugProcessor::countErrors()`,`Logger::getLogs()` and`Logger::countErrors()` will have a new`$request` argument in version 5.0, not defining it is deprecated.
145+
126146
Security
127147
--------
128148

@@ -149,8 +169,9 @@ SecurityBundle
149169
Serializer
150170
----------
151171

152-
* Relying on the default value (false) of the "as_collection" option is deprecated since 4.2.
172+
* Relying on the default value (false) of the "as_collection" option is deprecated.
153173
You should set it to false explicitly instead as true will be the default value in 5.0.
174+
* The`AbstractNormalizer::handleCircularReference()` method will have two new`$format` and`$context` arguments in version 5.0, not defining them is deprecated.
154175

155176
Translation
156177
-----------

‎UPGRADE-5.0.md‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
UPGRADE FROM 4.x to 5.0
22
=======================
33

4+
BrowserKit
5+
----------
6+
7+
* The`Client::submit()` method has a new`$serverParameters` argument.
8+
49
Cache
510
-----
611

@@ -49,11 +54,21 @@ DoctrineBridge
4954
* Deprecated injecting`ClassMetadataFactory` in`DoctrineExtractor`, an instance of`EntityManagerInterface` should be
5055
injected instead
5156

57+
DomCrawler
58+
----------
59+
60+
* The`Crawler::children()` method has a new`$selector` argument.
61+
5262
EventDispatcher
5363
---------------
5464

5565
* The`TraceableEventDispatcherInterface` has been removed.
5666

67+
Finder
68+
------
69+
70+
* The`Finder::sortByName()` method has a new`$useNaturalSort` argument.
71+
5772
FrameworkBundle
5873
---------------
5974

@@ -101,6 +116,11 @@ HttpFoundation
101116
* The `getClientSize()` method of the `UploadedFile` class has been removed.
102117
* The `getSession()` method of the `Request` class throws an exception when session is null.
103118

119+
Monolog
120+
-------
121+
122+
* The methods `DebugProcessor::getLogs()`, `DebugProcessor::countErrors()`, `Logger::getLogs()` and `Logger::countErrors()` have a new `$request` argument.
123+
104124
Process
105125
-------
106126

@@ -142,6 +162,11 @@ SecurityBundle
142162
* The `security.authentication.trust_resolver.anonymous_class` parameter has been removed.
143163
* The `security.authentication.trust_resolver.rememberme_class` parameter has been removed.
144164

165+
Serializer
166+
----------
167+
168+
* The `AbstractNormalizer::handleCircularReference()` method has two new `$format` and `$context` arguments.
169+
145170
Translation
146171
-----------
147172

‎src/Symfony/Bridge/Monolog/CHANGELOG.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ CHANGELOG
55
-----
66

77
* added`ProcessorInterface`: an optional interface to allow autoconfiguration of Monolog processors
8+
* The methods`DebugProcessor::getLogs()`,`DebugProcessor::countErrors()`,`Logger::getLogs()`
9+
and`Logger::countErrors()` will have one`$request` argument in version 5.0, not defining
10+
it is deprecated since Symfony 4.2.
811

912
4.1.0
1013
-----

‎src/Symfony/Bridge/Monolog/Logger.php‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ class Logger extends BaseLogger implements DebugLoggerInterface, ResetInterface
2828
*/
2929
publicfunctiongetLogs(/* Request $request = null */)
3030
{
31+
if (\func_num_args() <1 &&__CLASS__ !==\get_class($this) &&__CLASS__ !== (new \ReflectionMethod($this,__FUNCTION__))->getDeclaringClass()->getName() && !$thisinstanceof \PHPUnit\Framework\MockObject\MockObject && !$thisinstanceof \Prophecy\Prophecy\ProphecySubjectInterface) {
32+
@trigger_error(sprintf('The "%s()" method will have one `Request $request = null` argument in version 5.0 and higher, not defining it is deprecated since Symfony 4.2.',__METHOD__),E_USER_DEPRECATED);
33+
}
34+
3135
if ($logger =$this->getDebugLogger()) {
3236
return\call_user_func_array(array($logger,'getLogs'),\func_get_args());
3337
}
@@ -40,6 +44,10 @@ public function getLogs(/* Request $request = null */)
4044
*/
4145
publicfunctioncountErrors(/* Request $request = null */)
4246
{
47+
if (\func_num_args() <1 &&__CLASS__ !==\get_class($this) &&__CLASS__ !== (new \ReflectionMethod($this,__FUNCTION__))->getDeclaringClass()->getName() && !$thisinstanceof \PHPUnit\Framework\MockObject\MockObject && !$thisinstanceof \Prophecy\Prophecy\ProphecySubjectInterface) {
48+
@trigger_error(sprintf('The "%s()" method will have one `Request $request = null` argument in version 5.0 and higher, not defining it is deprecated since Symfony 4.2.',__METHOD__),E_USER_DEPRECATED);
49+
}
50+
4351
if ($logger =$this->getDebugLogger()) {
4452
return\call_user_func_array(array($logger,'countErrors'),\func_get_args());
4553
}

‎src/Symfony/Bridge/Monolog/Processor/DebugProcessor.php‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ public function __invoke(array $record)
6161
*/
6262
publicfunctiongetLogs(/* Request $request = null */)
6363
{
64+
if (\func_num_args() <1 &&__CLASS__ !==\get_class($this) &&__CLASS__ !== (new \ReflectionMethod($this,__FUNCTION__))->getDeclaringClass()->getName() && !$thisinstanceof \PHPUnit\Framework\MockObject\MockObject && !$thisinstanceof \Prophecy\Prophecy\ProphecySubjectInterface) {
65+
@trigger_error(sprintf('The "%s()" method will have one `Request $request = null` argument in version 5.0 and higher, not defining it is deprecated since Symfony 4.2.',__METHOD__),E_USER_DEPRECATED);
66+
}
67+
6468
if (1 <=\func_num_args() &&null !== ($request =\func_get_arg(0)) &&isset($this->records[$hash =spl_object_hash($request)])) {
6569
return$this->records[$hash];
6670
}
@@ -77,6 +81,10 @@ public function getLogs(/* Request $request = null */)
7781
*/
7882
publicfunctioncountErrors(/* Request $request = null */)
7983
{
84+
if (\func_num_args() <1 &&__CLASS__ !==\get_class($this) &&__CLASS__ !== (new \ReflectionMethod($this,__FUNCTION__))->getDeclaringClass()->getName() && !$thisinstanceof \PHPUnit\Framework\MockObject\MockObject && !$thisinstanceof \Prophecy\Prophecy\ProphecySubjectInterface) {
85+
@trigger_error(sprintf('The "%s()" method will have one `Request $request = null` argument in version 5.0 and higher, not defining it is deprecated since Symfony 4.2.',__METHOD__),E_USER_DEPRECATED);
86+
}
87+
8088
if (1 <=\func_num_args() &&null !== ($request =\func_get_arg(0)) &&isset($this->errorCount[$hash =spl_object_hash($request)])) {
8189
return$this->errorCount[$hash];
8290
}

‎src/Symfony/Bridge/Monolog/Tests/LoggerTest.php‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,37 @@ public function testClear()
107107
$this->assertEmpty($logger->getLogs());
108108
$this->assertSame(0,$logger->countErrors());
109109
}
110+
111+
/**
112+
* @group legacy
113+
* @expectedDeprecation The "Symfony\Bridge\Monolog\Logger::getLogs()" method will have one `Request $request = null` argument in version 5.0 and higher, not defining it is deprecated since Symfony 4.2.
114+
*/
115+
publicfunctiontestInheritedClassCallGetLogsWithoutArgument()
116+
{
117+
$loggerChild =newClassThatInheritLogger('test');
118+
$loggerChild->getLogs();
119+
}
120+
121+
/**
122+
* @group legacy
123+
* @expectedDeprecation The "Symfony\Bridge\Monolog\Logger::countErrors()" method will have one `Request $request = null` argument in version 5.0 and higher, not defining it is deprecated since Symfony 4.2.
124+
*/
125+
publicfunctiontestInheritedClassCallCountErrorsWithoutArgument()
126+
{
127+
$loggerChild =newClassThatInheritLogger('test');
128+
$loggerChild->countErrors();
129+
}
130+
}
131+
132+
class ClassThatInheritLoggerextends Logger
133+
{
134+
publicfunctiongetLogs()
135+
{
136+
parent::getLogs();
137+
}
138+
139+
publicfunctioncountErrors()
140+
{
141+
parent::countErrors();
142+
}
110143
}

‎src/Symfony/Bridge/Monolog/Tests/Processor/DebugProcessorTest.php‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,26 @@ public function testWithRequestStack()
6060
$this->assertSame(1,$processor->countErrors($request));
6161
}
6262

63+
/**
64+
* @group legacy
65+
* @expectedDeprecation The "Symfony\Bridge\Monolog\Processor\DebugProcessor::getLogs()" method will have one `Request $request = null` argument in version 5.0 and higher, not defining it is deprecated since Symfony 4.2.
66+
*/
67+
publicfunctiontestInheritedClassCallGetLogsWithoutArgument()
68+
{
69+
$debugProcessorChild =newClassThatInheritDebugProcessor();
70+
$debugProcessorChild->getLogs();
71+
}
72+
73+
/**
74+
* @group legacy
75+
* @expectedDeprecation The "Symfony\Bridge\Monolog\Processor\DebugProcessor::countErrors()" method will have one `Request $request = null` argument in version 5.0 and higher, not defining it is deprecated since Symfony 4.2.
76+
*/
77+
publicfunctiontestInheritedClassCallCountErrorsWithoutArgument()
78+
{
79+
$debugProcessorChild =newClassThatInheritDebugProcessor();
80+
$debugProcessorChild->countErrors();
81+
}
82+
6383
privatefunctiongetRecord($level = Logger::WARNING,$message ='test')
6484
{
6585
returnarray(
@@ -73,3 +93,16 @@ private function getRecord($level = Logger::WARNING, $message = 'test')
7393
);
7494
}
7595
}
96+
97+
class ClassThatInheritDebugProcessorextends DebugProcessor
98+
{
99+
publicfunctiongetLogs()
100+
{
101+
parent::getLogs();
102+
}
103+
104+
publicfunctioncountErrors()
105+
{
106+
parent::countErrors();
107+
}
108+
}

‎src/Symfony/Component/BrowserKit/CHANGELOG.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
CHANGELOG
22
=========
33

4+
4.2.0
5+
-----
6+
7+
* The method`Client::submit()` will have one`$serverParameters` argument
8+
in version 5.0, not defining it is deprecated since version 4.2
9+
410
3.4.0
511
-----
612

‎src/Symfony/Component/BrowserKit/Client.php‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,10 @@ public function clickLink(string $linkText): Crawler
311311
*/
312312
publicfunctionsubmit(Form$form,array$values =array()/*, array $serverParameters = array()*/)
313313
{
314+
if (\func_num_args() <3 &&__CLASS__ !==\get_class($this) &&__CLASS__ !== (new \ReflectionMethod($this,__FUNCTION__))->getDeclaringClass()->getName() && !$thisinstanceof \PHPUnit\Framework\MockObject\MockObject && !$thisinstanceof \Prophecy\Prophecy\ProphecySubjectInterface) {
315+
@trigger_error(sprintf('The "%s()" method will have a third `array $serverParameters = array()` argument in version 5.0 and higher.Not defining it is deprecated since Symfony 4.1.',__METHOD__),E_USER_DEPRECATED);
316+
}
317+
314318
$form->setValues($values);
315319
$serverParameters =2 <\func_num_args() ?func_get_arg(2) :array();
316320

‎src/Symfony/Component/BrowserKit/Tests/ClientTest.php‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
useSymfony\Component\BrowserKit\CookieJar;
1717
useSymfony\Component\BrowserKit\History;
1818
useSymfony\Component\BrowserKit\Response;
19+
useSymfony\Component\DomCrawler\FormasDomCrawlerForm;
1920

2021
class SpecialResponseextends Response
2122
{
@@ -877,4 +878,42 @@ public function testInternalRequestNull()
877878
$client =newTestClient();
878879
$this->assertNull($client->getInternalRequest());
879880
}
881+
882+
/**
883+
* @group legacy
884+
* @expectedDeprecation The "Symfony\Component\BrowserKit\Client::submit()" method will have a third `array $serverParameters = array()` argument in version 5.0 and higher.Not defining it is deprecated since Symfony 4.1.
885+
*/
886+
publicfunctiontestInheritedClassCallSubmitWithTwoArguments()
887+
{
888+
$clientChild =newClassThatInheritClient();
889+
$clientChild->setNextResponse(newResponse('<html><form action="/foo"><input type="submit" /></form></html>'));
890+
$clientChild->submit($clientChild->request('GET','http://www.example.com/foo/foobar')->filter('input')->form());
891+
}
892+
}
893+
894+
class ClassThatInheritClientextends Client
895+
{
896+
protected$nextResponse =null;
897+
898+
publicfunctionsetNextResponse(Response$response)
899+
{
900+
$this->nextResponse =$response;
901+
}
902+
903+
protectedfunctiondoRequest($request)
904+
{
905+
if (null ===$this->nextResponse) {
906+
returnnewResponse();
907+
}
908+
909+
$response =$this->nextResponse;
910+
$this->nextResponse =null;
911+
912+
return$response;
913+
}
914+
915+
publicfunctionsubmit(DomCrawlerForm$form,array$values =array())
916+
{
917+
returnparent::submit($form,$values);
918+
}
880919
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp