‘namespace%s’ is an invalid class name

Description

namespace, when used in a fully qualified name, represents the current namespace. It is usually omitted.

self describes the current class. It is a relative class name, as it has no literal value.

As such, self doesn’t have an absolute path version, such as namespace\self. Hence, the error emitted there.

This error is also emitted for static and parent.

Omitting the namespace keyword, and writing \self, is also forbidden for the same reason.

Example

<?php

function foo(namespace\self $a) {};

function foo( $a): namespace\self {};

class X {
    private namespace\self $f;
    private namespace\x $f2;
}

?>

Literal Examples

  • ‘namespaceself’ is an invalid class name

Solutions

  • Remove the initial namespace and backslash.

  • Use the literal name of the intended class.