Skip to content

Commit affe933

Browse files
Merge branch '7.2' into 7.3
* 7.2: [VarDumper] Fix dumping on systems that don't have a working iconv [Console] fix profiler with overridden `run()` method [Config] Fix support for attributes on class constants and enum cases
2 parents 77fcb77 + 1c28fbd commit affe933

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

Resource/ReflectionClassResource.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,14 @@ private function generateSignature(\ReflectionClass $class): iterable
134134
yield print_r($class->getConstants(), true);
135135
}
136136

137+
foreach ($class->getReflectionConstants() as $constant) {
138+
foreach ($constant->getAttributes() as $a) {
139+
$attributes[] = [$a->getName(), (string) $a];
140+
}
141+
yield $constant->name.print_r($attributes, true);
142+
$attributes = [];
143+
}
144+
137145
if (!$class->isInterface()) {
138146
$defaults = $class->getDefaultProperties();
139147

Tests/Resource/ReflectionClassResourceTest.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,30 @@ public function testIgnoresObjectsInSignature()
195195
TestServiceWithStaticProperty::$initializedObject = new TestServiceWithStaticProperty();
196196
$this->assertTrue($res->isFresh(0));
197197
}
198+
199+
public function testEnum()
200+
{
201+
$res = new ReflectionClassResource($enum = new \ReflectionClass(SomeEnum::class));
202+
$r = new \ReflectionClass(ReflectionClassResource::class);
203+
$generateSignature = $r->getMethod('generateSignature')->getClosure($res);
204+
$actual = implode("\n", iterator_to_array($generateSignature($enum)));
205+
$this->assertStringContainsString('UnitEnum', $actual);
206+
$this->assertStringContainsString('TestAttribute', $actual);
207+
$this->assertStringContainsString('Beta', $actual);
208+
}
209+
210+
public function testBackedEnum()
211+
{
212+
$res = new ReflectionClassResource($enum = new \ReflectionClass(SomeBackedEnum::class));
213+
$r = new \ReflectionClass(ReflectionClassResource::class);
214+
$generateSignature = $r->getMethod('generateSignature')->getClosure($res);
215+
$actual = implode("\n", iterator_to_array($generateSignature($enum)));
216+
$this->assertStringContainsString('UnitEnum', $actual);
217+
$this->assertStringContainsString('BackedEnum', $actual);
218+
$this->assertStringContainsString('TestAttribute', $actual);
219+
$this->assertStringContainsString('Beta', $actual);
220+
$this->assertStringContainsString('beta', $actual);
221+
}
198222
}
199223

200224
interface DummyInterface
@@ -225,3 +249,19 @@ class TestServiceWithStaticProperty
225249
{
226250
public static object $initializedObject;
227251
}
252+
253+
enum SomeEnum
254+
{
255+
case Alpha;
256+
257+
#[TestAttribute]
258+
case Beta;
259+
}
260+
261+
enum SomeBackedEnum: string
262+
{
263+
case Alpha = 'alpha';
264+
265+
#[TestAttribute]
266+
case Beta = 'beta';
267+
}

0 commit comments

Comments
 (0)