![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 13.02.2004 Skąd: Przasnysz Ostrzeżenie: (0%) ![]() ![]() |
Mam dwa obiekty. Jeden służy do inicjacji konfiguracji, obiektów pomocniczych, tworzenia instancji singletonów i innych drobnych rzeczy. Wszystkie obiekty w skrypcie dziedziczą z tego obiektu. Drugi obiekt dziedziczy z pierwszego i służy do wykonania konkretnego zadania.
Chciałem dodać (do pierwszego obiektu) wywoływaną zawsze z kontekstu drugiego obiektu prostą funkcję wyświetlającą print_r dla wszystkich zmiennych obiektu (żeby łatwiej było mi pisać i debugować). I tu napotkałem problem. Jeśli funkcja jest zadeklarowana w obiekcie pierwszym, to mimo tego, że wywoływana jest z obiektu drugiego, $this odwołuje się do obiektu pierwszego. Przygotowałem odrobinę kodu dla zilustrowania problemu (php5):
powyższy przykład generuje: Ponieważ w php nie ma czegoś takiego jak 'child' nie wiem co z tym zrobić. Ktoś ma jakiś pomysł jak to obejść? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 13.02.2004 Skąd: Przasnysz Ostrzeżenie: (0%) ![]() ![]() |
Protected jest, ale działa tylko w jedną stronę - tzn zmienne obj1 są widoczne dla obj2, ale zmienne obj2 nie są widoczne dla obj1. Poza tym - o to właśnie chodzi żeby nie zmieniać widoczności zmiennych. Mam dobre powody żeby część zmiennych była prywatna.
Problem można uogólnić. Deklaracja
to z jakiegoś powodu nie to samo co
Dlaczego? Gdyby był sposób żeby odwołać się do obiektu-dziecka nie wiedząc jaka to klasa, problem znikłby. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 19:56 |