Jaka jest roznica pomiedzy self a nazwa kalsy?

0

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()

2

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.

0

@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.

0

robisz kopię obiektu? to może użyj clone

0

Sorry, nie kopie. Po prostu tworze zupelnie nowa obiekt. Przez new.

4

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1