Pozivanje f-je u zavisnosti od stringa

Pozivanje f-je u zavisnosti od stringa

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

Imam sledeci problem: u promenljivoj $pozovi imam neki string, i hocu da na osnovu sadrzaja te promenljive pozovem istoimenu f-ju - tj. ako je:

$pozovi = "nesto";

da se pokrene f-ja Nesto();

Znam da bi to moglo da se uradi preko switch-a, ali mi to resenje ne odgovara u potpunosti: jer mi treba pozivanje bilo koje f-je, bez prethodnog definisanja - tj sta god da se nadje u toj promenljivoj, da pozove f-ju sa tim imenom.

Moze li ovo da se uradi?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Imas call_user_func i call_user_func_array [ ako hoces da proslijedis argumente kao prvi, drugi, ...]

<?php function increment(&$var) {     $var++; } $a = 0; call_user_func('increment', $a); echo $a; // 0 call_user_func_array('increment', array(&$a)); // You can use this instead echo $a; // 1 ?>



offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

To care, svaka ti dala Smile

hocu da razdvojim sistemske f-je od f-ja koje su specificne za svaki skin, i ovo mi je leglo k'o kec na desetku Smile

Sad imam drugo pitanje, ali je na istu temu: sistemskih f-ja ima relativno malo (<10), pa razmisljam da li da stavim pozivanje u switch, gde za svaku sistemsku f-ju postoji case, a da default bude call_user_func, ili postoji i elegantnije resenje?

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Za prvo pitanje s pocetka teme, zar ne bi mogao stvari da resis uz pomoc eval()?

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

@Rastafarii
Kad vec odvajas neke funkcije, sto ne napravis neke klase, imam osjecaj da ce ti tako biti organizovanije.

@bobby
Mislim da je eval dosta sporiji od gore navedene funkcije, a eval opcenito treba sto vise izbjegavati.

offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

@igor86
Ta sporost ne bi uticala u ovom slucaju jer se radi o pozivu samo jedne funkcije. A da li je eval sporiji zavisi i od toga kako/gde/za sta se koristi.

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

@stankovic
Sporost ne bi uticala? Ok, ja govorim sta je vecini slucajeva brze i funkcionalnije.

Zamisli da kroz eval moras da kao argument proslijedis neki niz ili object?

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

Pa u pravu je stankovic... brzina ne igra neku ulogu, jer ce na taj nacin da se poziva max. 2-3 f-je po strani. Sa druge strane, f-jama ne prosledjujem nijedan parametar Smile

U svakom slucaju, call_user_func mi zavrsava posao (i vise od toga) Smile ukoliko neko ima bolje resenje, rado cu ga saslusati.

Drugo pitanje ostaje otvoreno Smile

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Evo ga, ima bolje, ubija brzinom i funkcionalnoscu Wink

$pozovi = "nesto"; $pozovi();

Ko je trenutno na forumu
 

Ukupno su 854 korisnika na forumu :: 130 registrovanih, 11 sakrivenih i 713 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 15694 - dana 01 Feb 2026 12:23

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, A.R.Chafee.Jr., advokat84, aleph_one, amstel, Andrija357, Armadillo, asdfjklc, Asparagus, Avalon015, bankulen, Batko.VD.65, BB, Blair, blue, bojank, bokicacar, bolimejoli, Botovac, bukefal, cekic, CHARLIE JA., chichabg, Cicumile, Citalac, Crazzer, crnirocko, cvrle312, darios, Darko Jovanovic, darkojbn, debeli, DeerHunter, dmarx1, Dorcolac, draganca, Dungorth, dzada, Fliper, fokac, ginjica, Gogi_avio, goran.vvv, Halabit, Hans Gajger, Heavy Jerk, ibssa, igorkozar83, Ikica977, Insan, Jaz, Jerry Drake, joca83, Kajzer Soze, Kenanjoz, kibihrchak, Kichma, KimiMR, kolle.the.kid, komsija1, Kontrausluga, larix, Leonov, leopard83, Levi, Lieutenant, LjubisaR, Lobo, Lubenica303, Malahit, MarijaC84, Marko00, MarsRed, mercedesamg, micke83, miki69, mikrimaus, Miletić Zoran, milivoje_vatrogasac, Milometer, milutin134, Mitch22, mm1811, mocnijogurt, Mr.G., MrG, Mzee, narandzasti, Niki2024, Njubara, Nmr, nobutado, Nomica, pein, Pero Petković, pobeda, promajauglavi, Pv123, Radoslava, raptorsi, RED4G-304, ruma, S2M, SamoGledam, Sass Drake, Sir Budimir, skvara, Solunac na steroidima, Sone0883, Stanislav1970, stegonosa, Stoilkovic, tamno.nebo, Tas011, theNedjeljko, tomo2, troki1971, TRZH92, Uros Cuore Sportivo, v0idmp3, Vanderx, vathra, VBoss, vensla, Vlada78, vzd1389, Xland, yorov, Zoran1959, 800077