Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 163 Pomógł: 0 Dołączył: 10.09.2006 Ostrzeżenie: (0%)
|
mam klasę w której chciałbym mieć przeładowany konstruktor, i zastanawiam sie jak to zrobić. jeden wywoływany z jednym parametrem(tablica), a drugi z 6 zmiennymi. Nie wiem czy bawić się tu w zliczanie argumentów func_num_args, czy też funkcją __call() [tylko ie bardzo wiem jak ją zapisać]
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%)
|
Chyba chodzi ci o przeciążenie a nie przeładowanie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Jak już pewnie wiesz w php nie da się tego zrobić po ludzku i trzeba się uciec do kombinowania, które zazwyczaj psuje czytelność kodu. Ja osobiście w większości takich przypadków używam osobnej meteody/metod statycznych, które są odpowiedzialne za tworzenie obiektu. Sam konstruktor zawsze przyjmuje określone parametry - najczęściej tablicę asocjacyjną. Oprócz tego istnieje osobna klasa z metodami static, która odpowiednio inicjuje obiekt w zależności od potrzeb czyli np. mam klasę produkt z konstruktorem
a do tego osobną klasę z metodami static takimi jak np:
itd itp. Nie wiem czy tak jest poprawnie, ale wydaje mi się to najbardziej przejrzystą metodą, która pozwala na łatwe rozszerzanie, gdyby w przyszłości okazało się, że potrzebuję innego sposobu na wywołanie obiektu. Oczywiście ten schemat stosuję tylko w wypadku skomplikowanych obiektów. W przypadku, gdy jest jakiś prosty obiekt i 2 warianty jego tworzenia - tj. z bazy lub z tablicy, stosuje coś jak ActiveRecord. Stworzyłem takie małe rozwiązanie oparte o ZF, gdzie mogę szybko definiować obiekty wskazując ich pola, i potem inicjować je przekazując listę wartości tych pól lub rekord odczytany z bazy. |
|
|
|
enigma jak przeładować konstruktor 27.02.2007, 21:37:53 
enigma Cytat(athabus @ 27.02.2007, 23:17:39 ... 28.02.2007, 21:30:55 
athabus Cytat(enigma @ 28.02.2007, 21:30:55 )... 1.03.2007, 16:25:37
Strzałek Prawy górny róg. Google. Wpisujemy "przeciąże... 1.03.2007, 14:56:17 ![]() ![]() |
|
Aktualny czas: 25.12.2025 - 21:22 |