FAQ |
Kalender |
2012-01-22, 14:41 | #1 | ||
|
|||
Har WN som tidsfördriv
|
Hej,
jag undrar varför jag inte kan använda strängar som array index för att få ut värden i PHP? Finns det något annat sätt att göra det på (inga evals!!)? Jag börjar få hjärnsläpp... PHP-kod:
|
||
Svara med citat |
2012-01-22, 15:05 | #2 | ||
|
|||
Administratör
|
Är ju inga problem om du använder en eval. Annars skulle det enda jag kommer på vara att splitta strängen för varje nivå i arrayen och sen skriva ut $arr[$part1][$part2].
__________________
eldefors.com - Personlig (teknik)-blogg |
||
Svara med citat |
2012-01-22, 16:36 | #3 | ||
|
|||
Har WN som tidsfördriv
|
Det är det jag var rädd för, det är nämligen så att jag håller på med att ta fram ett eget templating system och undviker evals så långt jag kan pga. säkerhet och prestanda.
|
||
Svara med citat |
2012-01-22, 17:22 | #4 | ||
|
|||
Administratör
|
Om du gör det en gång lär det vara något snabbare att loopa ut array-nycklarna en för en och hämta variabeln. Men om du kombinerar alla dina evals till en som du kör sist/när du behöver så kommer prestanda-skillnaden att vara minimal. Det är initieringen av eval som är väldigt långsam, inte exekveringen av koden.
En annan teknik som ofta används är att kompilera templates till vanliga script-filer, i ditt fall PHP. På så sätt slipper du parsa templates vid varje request utan endast när en kompilerad fil är out of date.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
Svara med citat |
2012-01-22, 18:23 | #5 | ||
|
|||
Har WN som tidsfördriv
|
Clarence, tack för ditt svar. Såsom det nu fungerar är att preg_replace körs på template filen och byter ut alla {{$whatever}} mot innehållet i motsvarande variabel som sätts i modellen. Sedan har jag ett cache-system som cachar resultatfilen i X antal minuter (om man sätter flaggan till att den skall cacha). Jag har såklart redan kikat på källkoden till Smarty, Templatum m.m. men jag kan inte få till ett 100% resultat såsom jag vill ha det. Syftet är att till slut kunna ha liknande syntax:
1. {{ $hej }} // innehållet i variabeln $hej printas ut 2. {{ for n = 1 to 100 }} // counters 3. {{ $hej['hopp'][1] }} // skriva ut andra värdet i array $hej med index 'hopp' ... |
||
Svara med citat |
Svara |
|
|