Skip to content

ReflectionClass::getConstants() gives an error depending on the order of constants definition #8080

Closed
@bsod85

Description

@bsod85

Description

The following code:

<?php

class A {
    const LIST = [
        self::TEST => 'Test',
    ];
    private const TEST = 'test';
}

class B extends A {
    
}

$r = new ReflectionClass(B::class);
print_r($r->getConstants());

Resulted in this output:

Fatal error: Uncaught Error: Undefined constant self::TEST in /in/FuJAW:15
Stack trace:
#0 /in/FuJAW(15): ReflectionClass->getConstants()
#1 {main}
  thrown in /in/FuJAW on line 15

But I expected this output instead:

Array
(
    [LIST] => Array
        (
            [test] => Test
        )

)

that is the output you get by defining the constants this way:

private const TEST = 'test';
const LIST = [
    self::TEST => 'Test',
];

PHP Version

8.1.2

Operating System

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions