Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wzorzec Fabryka i metody statyczne.
Forum PHP.pl > Forum > PHP > Object-oriented programming
zdzichu
Witam.
Mój problem wygląda następująco:
Tworzę sobie pewną klasę, jednak w trakcie pisania rozrosła się... i trzeba było to przerobić na 3 klasy i zastosować wzorzec fabryki. Problem w tym, że nie wiem, jak ugryźć teraz używanie statycznych metod klas- dokładniej wyglądało to tak:
  1. <?php
  2. $foo= new foo_class;
  3. $foo->doBar();
  4. foo_class::doSomething();
  5. ?>

po przeróbce na fabrykę:
  1. <?php
  2. $foo= new foo::getInterface();
  3. $foo->doBar() //to dziala...
  4. foo_class::doSomething(); //to juz niestety nie....
  5. ?>

czy może ktoś podsunąć jakieś rozwiązanie problemu?
ActivePlayer
a do czego uzywasz tych metod statycznych?
dr_bonzo
Pokaz wiecej kodu, definicje tych klas + podstawowe (te niedzialajcace i istotne) metody, bo nie widze czemu raz
foo_class::doSomething();
mialo by dzialac a raz nie.

Poza tym pomyliles fabryke z Singletonem

  1. <?php
  2. $foo= new foo::getInterface();
  3. ?>

to dziala? Da sie w php zwracac Klase?
zdzichu
ehh...po przespaniu się z tym kodem stwierdziłem, że jest on przekombinowany. Natomiast mimo wszystko chętnie dowiedziałbym się, jak korzystać z metod statycznych przy "fabryce" (ew. przy fabryce a`la zdzichu biggrin.gif )
[quoote]Pokaz wiecej kodu, definicje tych klas + podstawowe (te niedzialajcace i istotne) metody, bo nie widze czemu raz
foo_class::doSomething();
mialo by dzialac a raz nie.[/quote]
tzn samo w sobie to dziala, natomiast chodzi o to, ze foo::getInterface() pobiera mi odpowiednia klase-dziecko (zalozmy klase bar) i to na niej powinno sie odbywac
  1. <?php
  2. bar::doSomething();
  3. ?>

a nie na
  1. <?php
  2. foo_class::doSomething();
  3. ?>

na żywo ustawienie bar::doSomething nic nie da, bo wtedy i wybieranie odpowiedniego interfejsu byłoby bez sensu- chodzi konkretnie jak wywołać metodę statyczną tego konkretnego interfejsu

PEES: pisząc tu o "interfejsach" nie mam na myśli http://pl.php.net/manual/en/language.oop5.interfaces.php <-- interfejsów smile.gif tylko zwykłe klasy, sterowniki- bo to może być mylące:)
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.