Posty

Wyświetlanie postów z listopad, 2020

Jeden prosty krok do SOLIDnego kodu - Klasy final w PHP

Słowo kluczowe `final` Zastosowanie final w klasie, uniemożliwia zastosowanie dziedziczenia względem niej. Także może się wydawać że blokujemy rozszerzalność takiej klasy i zamykamy się na korzyści płynące z mechanizmu polimorfizmu. Ale czy na pewno? Moim zdaniem `final class` to wspaniałe narzędzie wspierające SOLIDa , chociaż wymaga bardzo dużo samo zaparcia i warto mieć na uwadze że SOLID to tylko zestaw reguł, które można, ale nie trzeba wykorzystywać. Zobaczmy więc co zyskujemy dzięki stosowaniu słowa `final`. Liskov Subtition Principle Zależnie od tego jak spojrzymy na tę regułę zyskujemy w obydwu przypadkach. W "oryginalnej" regule Liskov, zastosowanie `final` zablokuje możliwości dziedziczenia takiej klasy, a więc całkowicie wyeliminuje potencjalny problem niepoprawnego dziedziczenia klas bazowych , które gdzieś w środku mógłby wpłynąć na poprawność działania aplikacji. Wystarczy przypomnieć sobie przykład z kołem i elipsą. Natomiast Martin rozszerza tę regułę o konc