Interface Constant Visibility Checks

PHP checks if the visibility of constants that are also part of an interface are all public. If the class constant, in the class, is not public, it is a Fatal Error. This was not checked until PHP 8.3.

PHP code

<?php

interface i {
        public const I = 1;
        public const J = 2;
}

class x implements i {
        private const I = 1;
        public const J = 2;
}

print x::J;
print x::I;
?>

Before

Cannot access private constant x::I

After

Access level to x::I must be public (as in interface i)

PHP version change

This behavior changed in 8.3