Autor | Zpráva | ||
---|---|---|---|
na1k Profil |
#1 · Zasláno: 2. 11. 2007, 18:06:19
Název je možná trochu nejasný, nevím jak přesně nazvat svůj problém.
Snažím se o jednoduchý šablonovací systém. Funkce, která nahrazuje proměnné v šabloně za obsah, hledá tvar {promenna} a tu potom nahradí z předem naplněného pole hodnot (např. obsahem $data['promenna']). Tuto funkci se snažím rozšířit tak, abych mohl ze šablony "odkazovat" na skutečné proměnné z celého skriptu. Obsah, kterým nahrazuju šablonové proměnné je potom ${promenna}. Toto funguje, ale pouze v rámci funkce. Dostanu se tedy jenom k lokálním proměnným funkce. Napadlo mě jediné řešení, a to pokusit se před nahrazením danou proměnnou "zglobálnit", tzn. if (!isset(${$nazev_promenne})) global ${$nazev_promenne}; Toto ale nefunguje... mám někde nějakou technickou nebo logickou chybu? Napadá vás jak toto řešit? |
||
Kcko Profil |
#2 · Zasláno: 2. 11. 2007, 19:06:25
tady mas myslim neco lepsiho
|
||
na1k Profil |
#3 · Zasláno: 2. 11. 2007, 19:18:28
Ale to je nahrazení obsahem, který je předem načtený v poli. To už ta moje funkce umí :-)
To co potřebuju udělat je, aby se nenahrazovalo obsahem pole (tzn. proměnná ze šablony = klíč prvku v poli), ale aby se nahradila obsahem proměnné, která je kdekoliv jinde ve skriptu. Něco ve smyslu:
Toto je samozřejmě zjednodušený zápis (a možná i nefunkční), ale tak nějak bych potřeboval aby funkce fungovala. Hlavní je, aby uměla nahradit nejenom lokální $prom2 (to už moje funkce taky umí), ale i $prom1, která je mimo funkci a bylo by tudíž potřeba použít global. |
||
Alphard Profil |
#4 · Zasláno: 2. 11. 2007, 19:27:07
tak to hned nenahrazuj, ale projdi šablonu, najdi proměnné, definuj je jako globální a nahraď
|
||
na1k Profil |
#5 · Zasláno: 2. 11. 2007, 19:32:00
No jasně, toto jsem napsal jenom jako ukázku. Ve skutečnosti procházím šablonu a postupně nahrazuju. Problém mám při definování proměnných jako globální.
global ${$jmeno_promenne} ..mi nechce fungovat |
||
nightfish Profil |
#6 · Zasláno: 2. 11. 2007, 19:35:57
na1k
a co na začátku funkce použít toto: if (!isset(${$nazev_promenne})) ${$nazev_promenne} = $GLOBALS[$nazev_promenne]; |
||
na1k Profil |
#7 · Zasláno: 3. 11. 2007, 11:18:21
nightfish
To je dobrý nápad, to mě nenapadlo :) Funguje to sice jenom na proměnné, které byly dříve zglobálněné přes global, ale je to lepší než nic. |
||
Časová prodleva: 18 let
|
0