![]() |
Smarty plugin: module
Evo jednog mog smarty plugina koji ce verovatno nekome koristiti:
Citat:
|
Znaš da sam ja hteo pišem tako nesto pre neki dan. :)
Nego, ne znam kako ovo uopste radi: PHP kôd:
PHP kôd:
BTW, (za)ostao ti je ovaj global $conf, ne koristi se u funkciji :) BTW2, ako se vec koristi smarty, zar nije bolje zvati $smarty->trigger_error nego amo trigger_error. Generalno isto je, nego samo zbog konzistentnosti. |
trigger_error, slazem se. Isto kao i conf :) imam custom error handler, koji u futeru ispisuje sve sto mi treba tako da nisam mnogo vodio racuna o smarty debug-u.
Moj primer radi samo za staticke metode, sto je vise nego dovoljno dobro iz moje perspektive. Inace poziv koji si napisao je alternativa za PHP kôd:
|
Evo sad si me "naterao" da konsultujem php manual.... Može ovo tvoje call_user_func ("a::b") ali samo od php 5.3.2. Znam da to nije moglo tako ranije :)
|
Zaboravih, thanks... prepravio sam trigere i conf.
Takodje sam zaboravio da ti odgovorim za prosledjivanje parametara. Fora je sto nicemu ne skodi da prosledim 2 dodatna parametra funkcije :) a mrzelo me da pisem dva puta unset ;) Ne vidim sta bih dobio njima, niti sta gubim tako sto ostavljam jos dva clana areja |
Pa problem moze da nastane ako imas klasu X funkciju Y koja prima 2 parametra $a i $b
X::Y ($a, $b); i ti zoves {module claass="X" method="Y" a="nesto" b="nesto"} a ti prosledis kao X::Y( [svi parametri] ), onda ce $a da bude "X" a $b "Y" jer se parametri ne prosledjuju asocijativno vec po redu. Samo dva predloga: 1. isset proverava da li je setovano, u tvom slucaju je problem ako je setovano a prazan string, predlazem da umesti if (!isset()) stoji if (empty()) 2. mogao bi da dodas i opciono assign: $ret = call_user_func(... if (!empty($params['assign'])) { return $smarty->assign($params['assign'], $ret); } return $ret; |
Pogresno si skapirao filozoviju metoda koji se poziva.
On sam prima array, pa sa clanovima array-a radi nesto, ne prima 2 varijable kao u tvom slucaju nego jednu varijablu koja je asicijativni arej. |
Pa zato kažem, sigurno je nešto custom :) Ja sam gađao neko opštije rešenje.
|
za obicne (ne staticke) pozive sta fali upotrebi register_object()?
|
hmm nisam cuo do sada za register_object ?
|
Da, postoji register_object ali se time stvar nepotrebno komplikuje, ja za to koristim obican assign, pa recimo imam:
$neka_klasa = new Klasa() $smarty->assing_by_ref ('neka_klasa', $neka_klasa); a onda iz smarty zovem jednostavno {$neka_klasa->neka_funkcija()} Medjutim, to nikada i nije bio problem, problem su bas staticki pozivi o tome se i priča ovde, to ne mozes iz smarty da izvedes bez puno žongliranja. |
aaaa smarty metod register_object :D ja mislio php fja :)
|
Vreme je GMT +2. Trenutno vreme je 00:00. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.