Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [oop]Wskaźniki do obiektów
Forum PHP.pl > Forum > PHP
luinnar
Jestem trochę początkujący w oop i nie wiem jak się nazywa to co mamy z ... pokaże to na kodzie
  1. <?php
  2. $klasa = new klasa;
  3. ?>
i chodzi mi o to co mamy w zmiennej $klasa. Będę TO nazywał "odnośnikiem" (do czasu aż Wy mi nie powiecie smile.gif )

Mam taki teoretyczny problem.
Załóżmy że posiadam klasę MODULES.
Modules na początku programu odpala klasę DB i przechowuje "odnośnik" do niej.
Jeżeli w klasie newsów chciałbym użyć DB to wywołuje metodę klasy MODULES np: get('nazwa modułu') i ona zwraca mi "odnośnik" do odpowiedniej klasy a jak jej nie ma to ją odpala (czyli coś jak Singleton - jak się myle to poprawcie)

I teraz rodzi się pytanie: W jaki sposób dostarczyć każdej klasie "odnośnik" do klasy MODULES tak aby było to "obiektowo".
chmolu
Nie "odnośnik" tylko obiekt klasy X.
Możesz przekazać w konstruktorze lub np. stworzyć osobną metodę setModule(), czy coś podobnego.

Tak w ogóle to poczytaj sobie o OO tongue.gif
luinnar
Cytat(chmolu @ 2005-08-25 15:27:46)
Tak w ogóle to poczytaj sobie o OO tongue.gif

Troche czytałem (mam książkę do php i w wortalu jest artykuł)

O przekazywaniu w konstruktorze też myślałem ale wydawało mi się to "mało eleganckie" rozwiązanie.
Mógłbyś coś więcej powiedzieć o tej metodzie (setModule)
Ociu
singleton ?

  1. <?php
  2. public function __construct()
  3. {
  4. $this -> db = db::getinstance();
  5. }
  6. ?>
NuLL
Przy niekorzystaniu z singletona przekazywanie via konstruktor to rozwiązanie zdecydowanie najlepsze.
chmolu
Poza tym, kod najeżony Singletonami śmierdzi.

http://c2.com/cgi/wiki?SingletonPattern
http://c2.com/cgi/wiki?SingletonsAreEvil
luinnar
Ok.
Narodziło mi się nowe pytanie.
Jak przez klase module odpalić inną klase która potrzebuje jakiś danych do konstruktora

EDIT: Udało mi się to rozwiązać samemu - przesyłam dane w postaci tablicy.

Dziękuje wszystkim za pomoc. Wybrałem przekazywanie obiektu przez konstruktor i działa!
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.