MissingOverrideAttribute

Emitted when the config flag ensureOverrideAttribute is set to true and a method on a child class or interface overrides a method on a parent, but no Override attribute is present.

<?php

class A {
    function receive(): void
    {
    }
}

class B extends A {
    function receive(): void
    {
    }
}

Why this is bad

Having an Override attribute on overridden methods makes intentions clear. Read the PHP RFC for more details.

How to fix

Declare the #[\Override] attribute on all indicated methods, or run vendor/bin/psalter --issues=MissingOverrideAttribute to let Psalm do it for you.

Note that the #[\Override] attribute is compatible with all PHP versions, even PHP 4.

On PHP 8.0-8.2, require symfony/polyfill-php83 to polyfill the missing Override attribute.