4 lutego 2020

PHP: SOLID [I] Zasada segregacji interfejsów

To już przed ostatnia zasada SOLID, mianowicie L: Zasada segregacji interfejsów („Interface segregation principle„).

Zasada bardzo prosta, ale nim zaczniemy ją wyjaśniać, warto przypomnieć co dają nam interfejsy.

Interfe jest to zbiór deklaracji metod oraz właściwości które muszą się znaleźć w klasie która dany interfejs implementuje.

Przykładowy interfejs może wyglądać tak:

interface Solid
{
    public function save();
}

Klasa go implementująca prezentować się może następująco:

class Solid implements Interfaces\Solid
{
    public function save()
    {
        #metoda nie używana
    }
}

Powyższy kod będzie działać, php nie zanotuje błędu, ale… to nie jest zgodne z opisywaną dziś zasadą SOLID.

Wszystkie metody/właściwości interfejsu który implementuje klasa muszą być wykorzystywane w klasie.
Jeśli klasa którą tworzymy nie będzie korzystała z wszystkich metod interfejsu który implementuje, po prostu rozdzielmy owe metody na dwa różne interfejsy i zaimplementujemy wedle potrzeb jeden z nich.

Tworzenie metody pustej tylko po to, aby nasz kod działał to obejście łamiące Zasadę Segregacji Interfejsów.