Elveszett változó
Sziasztok!
Ha valakinek van ötlete, szánjon meg, kérem szépen:
Van egy osszerak() függvényem, ami az első paraméterben megadott fájlban lecserél bizonyos szövegrészeket include(...)-okra (hogy futási időben mondhassam meg, mi kerüljön bizonyos oldalak bizonyos helyeire). A lecserélés eredményét egy fájlba írom, ennek a fájlnak a nevével tér vissza az osszerak(). A felhasználás után ezt a fájlt törlöm a takarit() függvénnyel.
Van egy kirak() függvényem, ami előbb összerakja a kimeneti fájlt, include-olja, aztán le is törli, így néz ki:Az első paraméter a cserék előtti fájl neve, a második a cseréket leíró tömb.
Ha ezt írom:akkor a foo.html "hely01"-gyel jelölt pontján kiírja, hogy "Hello GipszJakab!"
Ha ezt írom:akkor a foo.html "hely01"-gyel jelölt pontján kiírja, hogy "Hello !"
Vagyis elveszett a változóm!
Illetve mégsem, mert, ha ezt írom:akkor a foo.html "hely01"-gyel jelölt pontján kiírja, hogy "Hello !", majd a lap aljára kiírja, hogy "GipszJakab".
Szóval $user változó megvan, de a (kétszeresen) include-olt kódrész üresnek látja. De csak akkor, ha a kirak() függvénnyel hívom meg. Ha a kirak függvény belsejét írom oda, akkor rendben fut le.
A gond csak a kirak() függvény körül lehet, de egyszerűen elképzelésem nincs, mi ott a gond, hiszen csak továbbadom a paramétereket, amelyek között nem is szerepel a $user nevű változó.
Ötletem nincs. Valaki? Előre is kösz.
■ Ha valakinek van ötlete, szánjon meg, kérem szépen:
Van egy osszerak() függvényem, ami az első paraméterben megadott fájlban lecserél bizonyos szövegrészeket include(...)-okra (hogy futási időben mondhassam meg, mi kerüljön bizonyos oldalak bizonyos helyeire). A lecserélés eredményét egy fájlba írom, ennek a fájlnak a nevével tér vissza az osszerak(). A felhasználás után ezt a fájlt törlöm a takarit() függvénnyel.
Van egy kirak() függvényem, ami előbb összerakja a kimeneti fájlt, include-olja, aztán le is törli, így néz ki:
function kirak(){
$tempfvalt = func_get_arg(1);
$master = func_get_arg(0);
include(osszerak($master, $tempfvalt));
takarit();
}
Ha ezt írom:
$user="GipszJakab";
$valt["hely01"]="hellouser.php";
include(osszerak("foo.html", $valt));
takarit();
Ha ezt írom:
$user="GipszJakab";
$valt["hely01"]="hellouser.php";
kirak("foo.html", $valt);
Vagyis elveszett a változóm!
Illetve mégsem, mert, ha ezt írom:
$user="GipszJakab";
$valt["hely01"]="hellouser.php";
kirak("foo.html", $valt);
echo $user;
Szóval $user változó megvan, de a (kétszeresen) include-olt kódrész üresnek látja. De csak akkor, ha a kirak() függvénnyel hívom meg. Ha a kirak függvény belsejét írom oda, akkor rendben fut le.
A gond csak a kirak() függvény körül lehet, de egyszerűen elképzelésem nincs, mi ott a gond, hiszen csak továbbadom a paramétereket, amelyek között nem is szerepel a $user nevű változó.
Ötletem nincs. Valaki? Előre is kösz.
Scope probléma?
Mivel nem látom a hellouser.php tartalmát lehet, hogy tévedek. Amúgy mi ez a func_get_arg(1) agyrém?
biztos scope probléma
a hellouser.php jelenleg annyi, hogy echo "Szia $user!";
Az agyrém a függvény paramétereinek kiolvasását végzi. Megnevezhettem volna a paramétereket a zárójelek között is, csak még mindig nem vagyok biztos benne, hogy hányan lesznek, és mire valók.
Nagyon köszönöm az ötletet, kipróbálom!
nagy-nagy köszönet
Fogadd nagy-nagy köszönetemet! Ilyen egyszerűen megoldottad a problémámat, beírtam a kirak() mögé egy global $user-t, és vígan működik!
Köszönöm! :)))
Szivesen
ASP.NET
Biztos van rá egyszerűbb megoldás, de nem jutott más az eszembe.
Elgondolkodtató, amit írsz, hogy mondjuk session elején fordítsam össze, amit lehet, és azt használjam később, de félek, ha sok a felhasználóm, elveszek a sok összefordított fájl között...
Függvények?
A cache-elésnél nem arra gondolok, hogy HTML-re fordítsd az egészet, és úgy cache-eld, hanem a template feldolgozása után keletkezzenek PHP-k, amik valódi kéréseket kiszolgálják. Ha változtatsz a template-en, akkor újragenerálod ezeket a futó php-ket. Így a template nem fog futni az éles kiszolgálás során, ami radikálisan csökkenti az erőforrásigényt, még is megmarad a könnyebbség, amivel a template használata jár.
Függvények???
Az én gondolatom az, hogy van egy komplex oldal, itt egy tánlázat. ott egy form, amott egy másik, megint máshol egy cikk, satöbbi, és ha teszem azt az egyik formot kitölti a felhasználó, és elküldi, akkor az oldal egésze változatlan marad, kivéve az adott form helye, ahol megjelenik helyette megint valami más.
Eredetileg arra gondoltam, hogy az erőforrásigényesebb részeket cache-lem nem az egészet egyben, mert akkor hogy változtatom meg csak egy részét? Mondjuk, ha ott hagyom a ContentPlaceHoldereket, és vizsgálom, hogy változtatni kell-e a tartalmukon, az tudna jó lenni...
Köszi, ezek csupa jó ötletek! :)
Prado
Üdv,
Felhő
értelmetlen
Például ha már dinamikusra akarod venni a függvényparamétereket, adj inkább át egy tömböt, amiben a változóid vannak. Kerüld a globalt, mert a globállal csak bonyolítod a kódot, használj inkább objektumokat.
És ha templatet akarsz, akkor válassz egyet inkább. Én a smarty-t használom már 4 éve. Csak ajánlani tudom.