Skip to content

Commit 14d64e1

Browse files
committed
Minor performance gain by putting the ReflectionClass instance into a var instead of creating one each time we want to use it.
1 parent c280e48 commit 14d64e1

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

src/functions.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,10 @@ function throwable_decode($json)
5757

5858
array_pop($properties);
5959

60+
$class = new ReflectionClass($json['class']);
6061
$throwable = new $json['class']();
6162
foreach ($properties as $key) {
62-
if (!(new ReflectionClass($json['class']))->hasProperty($key)) {
63+
if (!$class->hasProperty($key)) {
6364
continue;
6465
}
6566

tests/MissingAttributes.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace WyriHaximus\Tests;
4+
5+
final class MissingAttributes
6+
{
7+
public $message;
8+
}

tests/ThrowableDecodeTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,21 @@ public function test()
2727
self::assertSame([], $exception->getTrace());
2828
self::assertSame('whoops', $exception->getMessage());
2929
}
30+
31+
public function testWithMissingAttributes()
32+
{
33+
$json = [
34+
'message' => 'whoops',
35+
'code' => 13,
36+
'file' => __FILE__,
37+
'line' => 0,
38+
'trace' => [],
39+
'class' => 'WyriHaximus\Tests\MissingAttributes',
40+
];
41+
42+
/** @var MissingAttributes $exception */
43+
$exception = WyriHaximus\throwable_decode($json);
44+
self::assertSame('whoops', $exception->message);
45+
self::assertFalse(isset($exception->code));
46+
}
3047
}

0 commit comments

Comments
 (0)