Pozivanje f-je u zavisnosti od stringa

Pozivanje f-je u zavisnosti od stringa

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3745
  • 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: 3745
  • 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: 3745
  • 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 1404 korisnika na forumu :: 31 registrovanih, 8 sakrivenih i 1365 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Ageofloneliness, Asparagus, babaroga, Bokiboks, Brana01, CikaKURE, comi_pfc, Dukelander, FileFinder, Georgius, kolle.the.kid, ljuba, Lošmi, marsovac 2, Mcdado, Mi lao shu, Milos ZA, Mixelotti, Motocar, NoOneEver Dreams, oganj123, rodoljub, Skywhaler, Srle993, Trpe Grozni, uruk, vathra, Vatreni Zmaj, Vlad000, yrraf, zlaya011