Aktywne Wpisy
W tym wątku dodajemy rzeczy które kiedyś były uznawane za prestiżowe/marki premium
#polska #lata90 #wykop30plus #ekonomia #pytaniedoeksperta #pytanie
#polska #lata90 #wykop30plus #ekonomia #pytaniedoeksperta #pytanie
WielkiNos +133
Jak namówić chłopa żeby przepierdzielał całą wypłatę na drogi samochód i modne ciuchy oto jest pytanie.
#zwiazki #logikarozowychpaskow #niebieskiepaski #programista25k #samochody #problemypierwszegoswiata
#zwiazki #logikarozowychpaskow #niebieskiepaski #programista25k #samochody #problemypierwszegoswiata
Ale… ile masz tych metod? Może interface jest zbyt duży i powinien być rozbity na kilka mniejszych? Jedna z zasad SOLID: https://en.wikipedia.org/wiki/Interface_segregation_principle
LoggerInterface
. Ma on sporo metod.Żeby więc uniknąć duplikacji przy tworzeniu implementacji, dostępny jest
LoggerTrait
iAbstractLogger
.Na razie nie mam żadnych. To pytanie czysto teoretyczne.
Dzięki, zapoznam się.
Dzięki za linki do Loggera. Tak właśnie sobie własnie to wyobrażałem. Mam tylko jedną wątpliwość. Po co robią Trait oraz klasę abstrakcyjną? Obie rzeczy robią dokładnie to samo.
Podejrzewam, że po prostu czasami używają dziedziczenia z klasy abstrakcyjnej, a czasami używają Traita, tylko po co?
A które rozwiązanie użyć? To już zależy trochę od sytuacji i osobistej preferencji.
Osobiście unikam traitów i użyłbym klasy abstrakcyjnej. Jest to powszechniejsze rozwiązanie i dużo lepiej zakorzeniony pomysł. Dziedziczenie pionowe to klasyka OOP.
Traity pojawiły się w PHP „niedawno” i służą trochę jak „zautomatyzowane kopiuj–wklej” – z
Dzięki za wyjaśnienie.
No właśnie. Tak więc jeśli chcę stosować zasadę Composition over inheritance, to raczej powinienem użyć Traitów. Prawda (nie chcę wchodzić w dyskusję czy dziedziczenie jest złe czy nie :))
@rozdajozadarmo: Możesz rozszerzyć możliwości obiektu poprzez zrobienie nowego obiektu i kompozycję albo poprzez dziedziczenie. I jeśli masz do wyboru obie opcje –> zalecana jest raczej kompozycja niż dziedziczenie.
Tu masz przykład takiej sytuacji: https://gist.github.com/MacDada/4527f591f0f8437b804e1d3cd24bd0be
Mając do wyboru 3 powyższe opcje, zasada mówi, żeby preferować kompozycję. Traity traktuje się jako dziedziczenie poziomie (w przeciwieństwie do rozszerzania klas, czyli dziedziczenia pionowego).
Wychodzi na to, że dotychczas nieświadomie używałem właśnie kompozycji (sposobu z composition.php :)
Dzięki za wyjaśnienie sprawy traitów, nie patrzyłem na nie wcześniej jak na dziedziczenie poziome.