![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Niech kod przemówi za mnie.
![]() Czy jest jakiś automatyczny sposób na przekazanie wartości z klasy Rodzic do klasy Dziecko, czy muszę ręcznie pisać wywołania setterów i getterów? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Ze co chcesz zrobic?
Sproboj dac modyfikatory protected do zmiennych. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 25 Dołączył: 6.09.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@ orgleee
Nie jestem pewny czy dobrze Cię zrozumiałem, ale: - po pierwsze tak jak napisał dr_bonzo jeżeli właściwości klasy Rodzic mają modyfikator private nie są dziedziczone przez klasę dziecko. Jeżeli chcesz aby klasa dziecko dziedziczyła te właściwości musisz zmienić te modyfikatory na protected. - po drugie chyba pomyliłeś klasę z jej instancją. Załóżmy, że $_zmienna_1 i $_zmienna_2 mają modyfikator dostępu protected. Wykonując
tworzysz obiekt (instancję) klasy rodzic, więc
ustawia wartość właściwości obiektu $rodzic nie klasy Rodzic. Wywołanie
(zakładając, że $_zmienna_1 i $_zmienna_2 mają dostęp protected) spowoduje utworzenie obiektu klasy Dziecko. Właściwości $_zmienna_1 i $_zmienna_2 nie będą miały w tym momencie żadnej wartości, ponieważ nie zostały zainicjowane w definicji kalsy Rodzic. Według mnie są dwie metody wyjścia z tej sytuacji: - możesz zmodyfikować klasę Rodzic
Po takiej modyfikacji każdy nowo utworzony obiekt klasy Rodzic lub Dziecko będzie posiadał właściwości $_zmienna _1 i $_zmienna_2 z wartościami jak powyżej. - jeżeli nie chcesz inicjować wartości $_zmienna_1 i $_zmienna_2 w definicji klasy zmień tylko modyfikator na protected, a następnie użyj setterów.
Tak ja to widzę, ale ponieważ nie uważam się za eksperta w dziedzinie obiektowości być może jest coś o czym nie wiem i znajdzie się ktoś kto poda inne rozwiązanie. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
@piaseq: aaa, nie zauwazylem new Dziecko();
@orgle: zmienne instancji (private $costam) naleza do obiektu, a nie klasy. Czyli kazdy new Rodzic(), new Klasa() ma swoje zmienne ktore sa od siebie NIEZALEZNE. Napisz co chcesz osiagnac bo twoj kod jest nie jasny i nie przedstawia tego celu. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Cytat Czy jest jakiś automatyczny sposób na przekazanie wartości z klasy Rodzic do klasy Dziecko, czy muszę ręcznie pisać wywołania setterów i getterów? Mam obiekt klasy rodzic. Musze ponownie wykorzystać dane tylko w innym celu. Chce się dowiedzieć czy jest automatyczny sposób kopiowania danych między obiektami, czy wszystko muszę robić ręcznie. "$dziecko->setZm_1($rodzic->getZm_1());". No Chyba prościej wyjaśnić się już nie da. ![]() Ten post edytował orglee 17.01.2009, 12:53:55 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 25 Dołączył: 6.09.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Chce się dowiedzieć czy jest automatyczny sposób kopiowania danych między obiektami, czy wszystko muszę robić ręcznie. Z tego co wiem (jak pisałem wcześniej nie jestem ekspertem OOP) jeżeli te obiekty są instancjami różnych (nawet jeżeli jedna dziedziczy po drugiej) klas nie ma innej metody niż ręczne przypisanie. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Ale tak czy siak musiałbym pisać implementacje metody magicznej. Chciałem się dowiedzieć czy jest jakiś rodzaj rzutowania spokrewnionych zmiennych które są obiektami.
Cytat Z tego co wiem (jak pisałem wcześniej nie jestem ekspertem OOP) jeżeli te obiekty są instancjami różnych (nawet jeżeli jedna dziedziczy po drugiej) klas nie ma innej metody niż ręczne przypisanie. Dziękuję o to chodziło.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 06:03 |