Для PHP const будет отображаться строка (5) "hello"
<?php
const Y = "hello";
const X = Y;
var_dump(X);
Это выведет строку (1) "Y" с предупреждением о том, что вы используете Y, не определяя его.
<?php
const X = Y;
const Y = "hoge";
var_dump(X);
Это показывает строку (5) "привет" и, кажется, может видеть A::Y
до определения.
Почему вы не можете обратиться к обратному константу вне класса а внутри класса? В то время, что обрабатывается в каком порядке?
<?php
class A {
const X = A::Y;
const Y = "hello";
}
var_dump(A::X);