Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przeciążenie obiektu klasy
Pucy
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 8.05.2006

Ostrzeżenie: (0%)
-----


Witam, chcialbym zmienic obiekt klasy:)
  1. class Pudelko {
  2.  
  3.  
  4. public function __construct()
  5. {
  6. // Pobieram z bazy lub skad kolwiek informacje o typie pudelka
  7. switch($this->pobrane_dane)
  8. {
  9. case 'kwadratowe':
  10. $this = new Kwadratowe;
  11. break;
  12. }
  13.  
  14.  
  15. }
  16.  
  17. }
  18.  
  19. class Kwadratowe extends Pudelko {
  20.  
  21. protected $jakie = 'kwadratowe';
  22. }
  23.  
  24. class Owalne extends Pudelko {
  25.  
  26. protected $jakie = 'owalne';
  27. }


i teraz problem zaczyna sie tutaj:
Tworze obiekt klasy pudelko i pobieram z informacje jakiego typu jest to pudelko i ogolnie chodzi oto zeby przeladowac tworzony obiekt innym obiektem.
Czyli aby w podanym przykladzie tworzenie obiektu Pudelko (ktory gdzies tam ma informacje o jego typie) tak naprawde zwrocil (stworzyl) obiekt klasy Kwadratowe.

Mozna to jakos zrobic?

Ten post edytował Pucy 9.01.2011, 01:38:12


--------------------
TESTWIEDZY.PL - Przetestuj swoją wiedzę...

Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu...
Pracujemy na Ciebie! - MINDFLOW.PL
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
wdev
post
Post #2





Grupa: Zarejestrowani
Postów: 86
Pomógł: 20
Dołączył: 20.01.2010

Ostrzeżenie: (0%)
-----


To czego szukasz, jest znane pod nazwą wzorca projektowego Fabryka. Nie powinieneś przeciążać obiektu, ale zwracać nowy obiekt. Potrzebne ci jest coś w stylu:
  1. class FabrykaPudełek
  2. {
  3. public static function stworzPudelko($typ)
  4. {
  5. switch ($typ)
  6. {
  7. case 'kwadratowe':
  8. return new Kwadratowe();
  9. break;
  10. }
  11. }
  12. }
  13.  
  14. $pudelko = FabrykaPudelek::stworzPudelko('kwadratowe');


--------------------
-wdev-
Go to the top of the page
+Quote Post
Pucy
post
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 8.05.2006

Ostrzeżenie: (0%)
-----


Ale ja wlasnie korzystam z fabryki i zalozeniem jest ze przy tworzeniu (w momencie tworzenia nie mam typu lub nie ja go podaje) wiec $pudelko = FabrykaPudelek::stworzPudelko('kwadratowe');
ale chyba i tak mi cos uswiadomiles wiec sproboje cos innego


--------------------
TESTWIEDZY.PL - Przetestuj swoją wiedzę...

Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu...
Pracujemy na Ciebie! - MINDFLOW.PL
Go to the top of the page
+Quote Post
wdev
post
Post #4





Grupa: Zarejestrowani
Postów: 86
Pomógł: 20
Dołączył: 20.01.2010

Ostrzeżenie: (0%)
-----


A co robisz z tym obiektem zanim poznasz jego konkretną klasę?


--------------------
-wdev-
Go to the top of the page
+Quote Post
Pucy
post
Post #5





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 8.05.2006

Ostrzeżenie: (0%)
-----


On ogolnie jest tworzony za pomoca klasy ORM:: w kohana 3.

Tutaj przedstawilem ejszcze pewne rozwiazanie do przeladowania klasy factory http://dev.kohanaframework.org/issues/3559 ale to i tak nie jest to czego ja oczekuje.

Wymyslilem po prostu tak:

Przeladowalem funckje __call i po prostu w przypadku gdy bede staral sie pobrac jakies dane z konkretnego modelu typu testu, to bede je pobeiral za pomoca metod tego modelu. Moze osiagne to czego oczekuje.


Ale najlepszym rozwiazaniem vbyloby jednak jakiekowliek przeladowanie obiektu $this w zaleznosci od pewnego parametru. Eh.


--------------------
TESTWIEDZY.PL - Przetestuj swoją wiedzę...

Nie ma rzeczy niemożliwych. Niemożliwe wymaga jedynie więcej czasu...
Pracujemy na Ciebie! - MINDFLOW.PL
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 11:00