Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziedziczenie klasy czy zastosowanie global
Forum PHP.pl > Forum > PHP > Object-oriented programming
Luneth
Załóżmy, że w jednej klasie potrzebuję metody z drugiej, jakby nadrzędnej klasy, której obiekt stworzyłem jednak już w czasie działania skryptu. I teraz pytanie, czy zastosować subclass extends Class czy global $obiekt w metodzie subclasy? Wydaje mi się, że chyba drugie rozwiązanie lepsze, a może jest trzecie, inne i lepsze?
Zyx
Istnieje 29312389 sposobów przekazania potrzebnego obiektu do innego obiektu, i global na pewno nie jest najlepszym z nich. Przekaż ten potrzebny obiekt poprzez argument konstruktora, albo jakieś settery. Jeśli obiekt masz już stworzony, to dziedziczenie nic Ci nie da.
Luneth
Dziedziczenie daje, bo mam dostęp w tej podklasie do potrzebnej mi metody z klasy nadrzędnej i mogę jej używać. winksmiley.jpg Wiem, że jest dużo sposobów, ale chciałem się dowiedzieć, który będzie najlepszy biorąc pod uwagę założenia php obiektowego.
erix
A czemu nie singleton? Skoro jesteśmy już przy obiektówce, to korzystajmy z towarzyszących jej wzorców projektowych.
Zyx
To w końcu to jest "nadrzędna" czy "jakby nadrzędna" klasa? Po drugie ta metoda, o której mówisz, jest prywatna? Sprecyzuj to trochę.

Ad. singletona -> jest to też sposób, ale od pewnego czasu zaczynam unikać tego wzorca z prostego powodu: nie da się jego działania normalnie przetestować smile.gif.

Luneth
@Zyx
Mój problem rozwiązują założenia Singletonu, ponieważ potrzebuję aby metoda konkretnej klasy była dostępna w innej klasie. Myślę, że tu nie odgrywa roli czy nadrzędna faktycznie (rodzic) czy tylko ja to tak określam w odniesieniu do kontekstu. A metoda, a o którą mi chodzi jest publiczna.
Pilsener
Można też użyć metod statycznych, przydają się, jeśli potrzebujemy jakiś metod ogólno-dostępnych a nie chcemy ciągle przekazywać instancji klasy czy też tworzyć wielu obiektów tej samej klasy (w ZF nazywa się to helperami, to jakiś zbiór potrzebnych metod, jednak nie dających się sklasyfikować w ramach istniejących obiektów), działa to prosto:
  1. Nazwa_klasy::metoda();


I nie trzeba tworzyć egzemplarza klasy.

Wszystko zależy od celu, jaki chcesz uzyskać i sposobu, jaki wybierzesz. To Ty tworzysz aplikacje.
Luneth
Dzięki winksmiley.jpg Zastosowałem ostatecznie Singleton, ponieważ potrzeba mi tylko jednej instancji tejże klasy i tym sposobem rozwiązałem problem smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.