Skip to content

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

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions