Wpis z mikrobloga

@Jacob: uu, pierwsze pytanie, klasyka klasyk na każdym interwju, czym się różni interfejs od klasy abstrakcyjnej.

Jedno zawiera implementacje, drugie nie.
  • Odpowiedz
@Jacob: Tu wszystko jest logiczne, nawet w PHP. Interface + same deklaracje method, klasa abstrakcyjna to deklaracje + opcja definicji.
  • Odpowiedz
@Jacob: Klasy abstrakcyjnej używasz kiedy wiesz, że każda klasa pochodna która ją rozszerza musi posiadać taką samą podstawową funkcjonalność + dodatkowo deklarujesz w niej metody które muszą zostać zaimplementowane(czyli są abstrakcyjne). Wiesz co dane metody mają robić, ale nie w jaki sposób.
  • Odpowiedz
@Jacob: Interface > mysl w ramach "contract", do którego wszystkie klasy implementujące muszą się podporządkować (muszą mieć wszystkie takie same public metody). W interface'ach wrzucasz poprostu same nazwy metod bez ich body ( to co masz pomiędzy { } ). Czyli "co ma byc" > nie "co ma robic".

Dzięki temu możesz używać "type-hint" w metodach, robić Dependency Injection ( w _construct()) i wedle potrzeb podmieniać implementacje.

Dla przykladu bo
  • Odpowiedz
@Jacob: Odnosnie uzywania klas abstract - moze taki przyklad - masz na przyklad dwie klasy uzytkownik i klient, obie moga dziedziczyc po abstrakcyjnej klasie czlowiek:) w klasie czlowiek implementujesz wspolne metody dla klas uzytkownik i klient. Klasa czlowiek powinna byc abstrakcyjna bo w logice aplikacji nie ma obiektow klasy czlowiek...
  • Odpowiedz
@gajowy_marucha: Gdy już mam wrażenie, że wszystko rozumiem, ostatnie zdanie rozbija to wszystko.

Chyba muszę rozrysować sobie drzewko co z czego wychodzi i podpisać to odpowiednio, bo mi się już pieprzy.

Nie mniej jednak dzięki za komentarz.
  • Odpowiedz