Error Identifier: attribute.notFound
Every error reported by PHPStan has an error identifier. Here’s a list of all error identifiers. In PHPStan Pro you can see the error identifier next to each error and filter errors by their identifiers.
Code example #
<?php declare(strict_types = 1);
#[MyCustomAttribute]
class Foo
{
}
Why is it reported? #
The attribute class referenced in the #[...] syntax does not exist. PHP attributes must refer to existing classes. Using a non-existent class as an attribute will cause a runtime error when the attribute is reflected upon.
In the example above, the class MyCustomAttribute is not defined and cannot be autoloaded, so the attribute cannot be resolved.
How to fix it #
Define the attribute class or fix the class name if it was misspelled:
<?php declare(strict_types = 1);
+#[\Attribute]
+class MyCustomAttribute
+{
+}
+
#[MyCustomAttribute]
class Foo
{
}
Or correct the class name if the attribute exists under a different name or namespace:
<?php declare(strict_types = 1);
-#[MyCustomAttribute]
+#[\App\Attributes\MyCustomAttribute]
class Foo
{
}
How to ignore this error #
You can use the identifier attribute.notFound to ignore this error using a comment:
// @phpstan-ignore attribute.notFound
codeThatProducesTheError();
You can also use only the identifier key to ignore all errors of the same type in your configuration file in the ignoreErrors parameter:
parameters:
ignoreErrors:
-
identifier: attribute.notFound
Rules that report this error #
- PHPStan\Rules\Classes\ClassAttributesRule [1]
- PHPStan\Rules\Classes\ClassConstantAttributesRule [1]
- PHPStan\Rules\Constants\ConstantAttributesRule [1]
- PHPStan\Rules\EnumCases\EnumCaseAttributesRule [1]
- PHPStan\Rules\Functions\ArrowFunctionAttributesRule [1]
- PHPStan\Rules\Functions\ClosureAttributesRule [1]
- PHPStan\Rules\Functions\FunctionAttributesRule [1]
- PHPStan\Rules\Functions\ParamAttributesRule [1]
- PHPStan\Rules\Methods\MethodAttributesRule [1]
- PHPStan\Rules\Properties\PropertyAttributesRule [1]
- PHPStan\Rules\Properties\PropertyHookAttributesRule [1]
- PHPStan\Rules\Traits\TraitAttributesRule [1]