Skip to content

Commit 846ecd2

Browse files
committed
Use is_subclass_of instead of Reflection when possible
1 parent f4a5def commit 846ecd2

File tree

8 files changed

+22
-24
lines changed

8 files changed

+22
-24
lines changed

Controller/ExceptionController.php

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -185,18 +185,12 @@ protected function getAndCleanOutputBuffering(Request $request)
185185
protected function isSubclassOf($exception, $exceptionMap)
186186
{
187187
$exceptionClass = $exception->getClass();
188-
$reflectionExceptionClass = new \ReflectionClass($exceptionClass);
189-
try {
190-
foreach ($exceptionMap as $exceptionMapClass => $value) {
191-
if ($value
192-
&& ($exceptionClass === $exceptionMapClass || $reflectionExceptionClass->isSubclassOf($exceptionMapClass))
193-
) {
194-
return $value;
195-
}
188+
foreach ($exceptionMap as $exceptionMapClass => $value) {
189+
if ($value
190+
&& ($exceptionClass === $exceptionMapClass || is_subclass_of($exceptionClass, $exceptionMapClass))
191+
) {
192+
return $value;
196193
}
197-
} catch (\ReflectionException $re) {
198-
return 'FOSUserBundle: Invalid class in fos_res.exception.messages: '
199-
.$re->getMessage();
200194
}
201195

202196
return false;

Routing/Loader/Reader/RestActionReader.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,8 @@ private function getMethodArguments(\ReflectionMethod $method)
351351
$argumentClass = $argument->getClass();
352352
if ($argumentClass) {
353353
foreach ($ignoreClasses as $class) {
354-
if ($argumentClass->getName() === $class || $argumentClass->isSubclassOf($class)) {
354+
$className = $argumentClass->getName();
355+
if ($className === $class || is_subclass_of($className)) {
355356
continue 2;
356357
}
357358
}

Tests/Functional/Bundle/TestBundle/Controller/SerializerErrorController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ class SerializerErrorController extends Controller
2525
/**
2626
* @View
2727
*/
28-
public function exceptionAction()
28+
public function logicExceptionAction()
2929
{
30-
throw new \Exception('Something bad happened.');
30+
throw new \LogicException('Something bad happened.');
3131
}
3232

3333
/**

Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ request_body_param_converter:
44

55
test_serializer_error_exception:
66
path: /serializer-error/exception.{_format}
7-
defaults: { _controller: TestBundle:SerializerError:exception }
7+
defaults: { _controller: TestBundle:SerializerError:logicException }
88

99
test_serializer_error_invalid_form:
1010
path: /serializer-error/invalid-form.{_format}
@@ -20,4 +20,4 @@ test_param_fetcher_test:
2020

2121
test_view_response_listener:
2222
resource: FOS\RestBundle\Tests\Functional\Bundle\TestBundle\Controller\ArticleController
23-
type: rest
23+
type: rest

Tests/Functional/SerializerErrorTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public function testSerializeExceptionJson($testCase, $expectedContent)
2525
{
2626
$this->iniSet('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul');
2727

28-
$client = $this->createClient(array('test_case' => $testCase));
28+
$client = $this->createClient(array('test_case' => $testCase, 'debug' => false));
2929
$client->request('GET', '/serializer-error/exception.json');
3030

3131
$this->assertEquals($expectedContent, $client->getResponse()->getContent());
@@ -46,7 +46,7 @@ public function testSerializeExceptionXml($testCase, $expectedContent)
4646
{
4747
$this->iniSet('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul');
4848

49-
$client = $this->createClient(array('test_case' => $testCase));
49+
$client = $this->createClient(array('test_case' => $testCase, 'debug' => false));
5050
$client->request('GET', '/serializer-error/exception.xml');
5151

5252
$this->assertEquals($expectedContent, $client->getResponse()->getContent());
@@ -81,7 +81,7 @@ public function serializeExceptionXmlProvider()
8181
*/
8282
public function testSerializeInvalidFormJson($testCase, $expectedContent)
8383
{
84-
$client = $this->createClient(array('test_case' => $testCase));
84+
$client = $this->createClient(array('test_case' => $testCase, 'debug' => false));
8585
$client->request('GET', '/serializer-error/invalid-form.json');
8686

8787
$this->assertEquals($expectedContent, $client->getResponse()->getContent());
@@ -100,7 +100,7 @@ public function serializeInvalidFormJsonProvider()
100100
*/
101101
public function testSerializeInvalidFormXml($testCase, $expectedContent)
102102
{
103-
$client = $this->createClient(array('test_case' => $testCase));
103+
$client = $this->createClient(array('test_case' => $testCase, 'debug' => false));
104104
$client->request('GET', '/serializer-error/invalid-form.xml');
105105

106106
$this->assertEquals($expectedContent, $client->getResponse()->getContent());
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
imports:
22
- { resource: ../config/default.yml }
3+
- { resource: ../config/exception_listener.yml }
34

45
fos_rest:
56
view:
67
view_response_listener: 'force'
7-
exception:
8-
enabled: true
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
imports:
22
- { resource: ../config/default.yml }
3+
- { resource: ../config/exception_listener.yml }
34

45
framework:
56
serializer:
@@ -8,5 +9,3 @@ framework:
89
fos_rest:
910
view:
1011
view_response_listener: 'force'
11-
exception:
12-
enabled: true
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
fos_rest:
2+
exception:
3+
enabled: true
4+
messages:
5+
LogicException: true

0 commit comments

Comments
 (0)