When two methods have the same implementation, either it was a mistake - something else was intended - or the duplication was intentional, but may be confusing to maintainers. In the latter case, one implementation should invoke the other.

Noncompliant Code Example

class A {
    private const CODE = "bounteous";

    public function getCode() {
        doTheThing();
        return A::CODE;
    }

    public function getName() {  // Noncompliant
        doTheThing();
        return A::CODE;
    }
}

Compliant Solution

class A {
    private const CODE = "bounteous";

    public function getCode() {
        doTheThing();
        return A::CODE;
    }

    public function getName() {
        return $this->getCode();
    }
}

Exceptions

Methods that are not accessors (getters and setters), with fewer than 2 statements are ignored.