Witam,
Mam sobie prosta klase i w jedej z metod musze stworzy obiekt tej samej klasy. Jaka jest roznica pomiedzy new self()
vs new Myclass()
Witam,
Mam sobie prosta klase i w jedej z metod musze stworzy obiekt tej samej klasy. Jaka jest roznica pomiedzy new self()
vs new Myclass()
Głowy sobie uciąć nie dam, ale w tym przypadku chyba nie ma żadnej różnicy. Self wskazuje na instancję klasy, w której zostało użyte więc nawet w przypadku dziedziczenia otrzymasz i tak klasę bazową. Używając static byłaby różnica, ale z self szczerze mówiąc nic mi nie przychodzi do głowy.
Swoją drogą jeśli to nie tajemnica, to po co Ci taka dziwna konstrukcja? Wiem, że masz już sporo expa w PHP więc pewnie wiesz co robisz, ale z ciekawości chętnie się dowiem do czego Ci taka dziwna konstrukcja.
@hadwa Dzieki za odpowiedz. Tworzylem klase immutable. Czyli taka, ktrora nie zmienia swoich wlasciwosci. W momencie uzycia jej metod nie wykonujemy dzialania na obecnej wywolaniu obiekcie a tworzymy nowy obiekt, dzialanie wykonujemy na nowym obiekcie oraz zwrcamy nowy obiekt. Tak wiec mamy $klasa1
oraz $klasa2
. Taki najprostszy przyklad takiej klasy immutable to Datetimeimmutable.
Jezeli chodzi o self
oraz nazwe klas to zalezy. Za kazdym razem jak odnosze sie do nazwy klasy tj zwracam klase, tworze obiek uzywam method(): MojaKlasas
czy new MojaKlasa
. Natomiast self
uzywam, gdy np odwoluje sie do CONST MyValue
, czyli self::MyValue
.
robisz kopię obiektu? to może użyj clone
Sorry, nie kopie. Po prostu tworze zupelnie nowa obiekt. Przez new
.
Używanie self ma tą zaletę, że przy ewentualnej zmianie nazwy klasy, nie trzeba dokonywać refaktoryzacji.
Po drugie - self skraca zapis, i czyni kod czytelniejszym.