Calling ReflectionAttribute::newInstance() using an attribute name that has a matching class without #[Attribute] will result in an error.
Example :
<?php
class FakeAttribute {}
#[FakeAttribute]
class Test {}
try {
(new ReflectionClass(Test::class))->getAttributes()[0]->newInstance();
}
catch (Error $error) {
echo 'Throwed error ' . get_class($error) . ' with message : ' . $error->getMessage();
}
?>
This will output :
Throwed error Error with message : Attempting to use non-attribute class "FakeAttribute" as attribute