Autor | Zpráva | ||
---|---|---|---|
Yur4Y Profil |
#1 · Zasláno: 28. 7. 2009, 17:45:29 · Upravil/a: Yur4Y
Pri tvorbe svojej template triedy (podobnej ako v phpBB) som si prácu veľmi zľahčil použitím eval(). Kód, ktorý vygenerujem template triedou, vyzerá dajme tomu nejak takto (samozrejme, že tak nevyzerá, ale tiež začína a končí plaintextom, ktorý môže obsahovať PHP vsuvky):
$text = 'foo <?php echo "bar";?> baz'; A ten teraz potrebujem eval()núť. Logicky som to skúšal takto: eval( '?>' . $text . '<?php' ); To mi ale nepochopiteľne vracia foo bar baz<?php foo bar baz Proste preto, aby som videl očakávaný výsledok, musím '<?php' pri volaní eval() vynechať: eval( '?>' . $text ); Prečo? Logicky mi to tak vychádza, že v eval()e je ukončovacia značka ?>, tak aby mohol PHP skript ďalej bežať, musím znova pridať otváraciu značku (na konci eval()u). Aj keď pozriem do tej phpBB template triedy, je tam niečo takéto: eval(' ?>' . $this->compiled_code[$handle] . '<?php '); |
||
Nox Profil |
#2 · Zasláno: 28. 7. 2009, 18:47:46
|
||
Jan Tvrdík Profil |
#3 · Zasláno: 28. 7. 2009, 20:31:30
Nox:
Tak teď se přiznám, že jsem tvoji odpověď nepochopil. |
||
Yur4Y Profil |
#4 · Zasláno: 28. 7. 2009, 21:24:24 · Upravil/a: Yur4Y
Nox
Nie, ja nepotrebujem sprintf. Používam eval(), lebo v mojich template súboroch sú premenné, podmienky, cykly atď. Pár preg_replace() a všetko parádne ide. Vychádzam ale z toho, že <?php //nejaký PHP kód $text = 'foo <?php echo "bar";?> baz'; eval( '?>' . $text . '<?php' ); //zasa nejaký PHP kód ?> <?php //nejaký PHP kód ?> foo <?php echo "bar";?> baz <?php //zasa nejaký PHP kód ?> |
||
Mastodont Profil |
#5 · Zasláno: 28. 7. 2009, 22:06:07
Yur4Y
Proč si myslíš, že sis pomocí eval zjednodušil práci? Střídání HTML a PHP je zcela normální a IMHO rychlejší než volání eval. |
||
Yur4Y Profil |
#6 · Zasláno: 29. 7. 2009, 17:38:39
Mastodont
Ja viem, že to je normálna vec, ale na začiatku sú v tých template súboroch podmienky a premenné zapisované nie pomocou PHP syntaxe, ale podobne, ako v phpBB, ak to poznáte. Ten PHP kód, ktorý eval()ujem, vzniká až po niekoľkých preg_replace a nejakých cykloch. To ale nie je pointa problému, ja by som akurát chcel vedieť, prečo to <?php je tam nazvyš. |
||
Časová prodleva: 9 dní
|
|||
blizz_boz Profil |
#7 · Zasláno: 7. 8. 2009, 22:05:16 · Upravil/a: blizz_boz
Yur4Y
funkcia eval vykonáva PHP kód, ktorý sa nachádza v prememnnej tým že dáš na začiatok ?> <?php ak chceš aby sa spracovávalo HTML tak správny zápis je eval("?>$text"); |
||
Časová prodleva: 15 let
|
0