![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Jak teraz w metodzie test() przenieść dane do obiektu dziecka? Wiem że mógłbym zadeklarować te zmienne jako protected, ale nie chcę. Dodatkowo nawet jakbym tak zrobił to bym i tak musiał je przepisywać ręcznie, bo klasa A implementuje Iterator i foreach($this) nie da mi dostępu do zmiennych składowych. Istnieje może jakaś metoda na kopiowanie tego czy muszę klepać wszystkie zmienne? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
~marcio: Ta wiem że takie sztuki można dzięki Reflection robić, ale aż takim hardkorem nie jestem. (IMG:style_emoticons/default/tongue.gif)
~zegarek: Zrozumiałeś mnie prawie dobrze. Klasa rodzic implementuje Iterator na jednym ze swoich pól składowych, które notabene jest tablicą, więc nie mogę wykonać na nim iteracji przez $this, bo inaczej klucze nie będą nazwami zmiennych klasy tylko kluczami tej tablicy. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
~zegarek: Zrozumiałeś mnie prawie dobrze. Klasa rodzic implementuje Iterator na jednym ze swoich pól składowych, które notabene jest tablicą, więc nie mogę wykonać na nim iteracji przez $this, bo inaczej klucze nie będą nazwami zmiennych klasy tylko kluczami tej tablicy. ok.. to sprawdź jak tutaj zachowa się funkcja get_object_vars - powinna być odporna na iterator ale szczerze nie wiem a tylko na chwilę teraz zajrzałem na forum... czyli przykład wyżej zamień metodę na:
i jeśli zadziała (bez iteratora działa) to masz rozwiązanie i dostosujesz do swoich potrzeb... jeśli to nie zadziała to chyba będziesz musiał przy setterze czy jakkolwiek ustawiasz wartości składować nazwy w jakiejś tablicy... Ten post edytował zegarek84 24.04.2010, 14:31:02 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 06:03 |