[ Vuk Nikolić @ 18.12.2004. 14:07 ] @
pozdrav svima,

interesuje me da li moze da se napravi vise konstruktora, odnosno da oni imaju razlicite argumente.

kad sam probao da definisem dva konstruktora, znaci ImeKlase($arg) i ImeKlase($arg1, $arg2) prijavljuje mi gresku da ponovo deklarisem istu funkciju.

e sad, uz pomoc func_num_arg bi mogao da resim problem u jednom konstruktoru, ali mi je lakse da radim sa vise konstruktora (navika iz c++).

jel to moze u php5?

[ Ilija Studen @ 18.12.2004. 16:20 ] @
Koliko je meni poznato nije. Mislim da PHP uopšte nema mogućnost overloadovanja funkcija... Mudro odaberi ulazne podatke tako da možeš lepo da odlučuješ šta ćeš i kako ili koristi rešenje koje si ti naveo.
[ bluesman @ 19.12.2004. 00:25 ] @
Jedino resenje je da prosledjujes array kao parametar pa onda ukonstruktoru radis proveru elemenata, drugo resenje je da radis sa default vrednostima

ImeKlase ($a, $b = 5, $c = "test")

[ -zombie- @ 19.12.2004. 02:48 ] @
ima još jedan trik (jeste uz pomoć func_num_args(), ali "automatizovano" ;)

Code:
class Klasa {
    
    function Klasa() {
        call_user_method_array('Klasa'.func_num_args(), $this, func_get_args());
    }

    function Klasa1($arg1) {
        // konstruktor sa jednim argumentom
    }

    function Klasa2($arg1, $arg2) {
        // konstruktor sa dva argumenta
    }

    // itd.. ;)

}

[ Ilija Studen @ 19.12.2004. 10:59 ] @
zombie, to je skroz dirty rešenje ;)

Uglavnom koristim rešenje koje je Goran naveo (pod b.).
[ Vuk Nikolić @ 20.12.2004. 12:46 ] @
zombie svaka ti cast. nebi mi to palo napamet, bas iskusno.

al cu ipak ja da se drzim mog func_num_arg :)
[ leka @ 29.03.2005. 12:32 ] @
Ja bih nedostatak mogucnosti da se preopterete konstruktori resio tako sto bih prepravio svoje klase (cije instance prosledjujem konstruktoru) da sve od reda implementiraju neki odredjeni interfejs. Nakon toga mogu bez problema da jedan jedini argument tretiram na isti nacin, jerbo znam da taj objekat 100% ima funkcije koje cu pozivati u konstruktoru...