‘%s’ is an invalid class name¶
Description¶
self describes the current class. It is a relative class name, as it has no literal value.
As such, it doesn’t have an absolute path version, such as \self. Hence, the error emitted there.
This error is also emitted for static and parent.
It was possible to circumvent this check until PHP 8.1, with namespace\%s syntax, where namespace represents the current namespace.
Example¶
<?php
function foo(\self $a) {};
function foo( $a) : \self {};
class X {
private \self $f;
private \x $f2;
}
?>
Literal Examples¶
‘self’ is an invalid class name
‘parent’ is an invalid class name
‘static’ is an invalid class name
Solutions¶
Remove the initial backslash.
Use the literal name of the intended class.