ugrás a tartalomhoz

break :)

fchris82 · 2004. Ápr. 21. (Sze), 12.57
Sziasztok!

Volt egy fájl, ami egy változó alapján eldöntötte, hogy mit is fog csinálni. A változónak nagyon sok értéke lehetett a fájl több mint 1000 soros lett :-/ Ezt megelégelve a következőre módosítottam a dolgokat:
...
case 'vmi' : include('vmi.php'); break;
...

Ezzel most meg az a gond, hogy igen gyakran használtam a break utasítást, és az most átkerült a vmi.php-ba :| Csakhogy így meg nem tudja a szerencsétlen, hogy mire vonatkozik a break!
Hogy tudnám megoldani, hogy bármikor a beszúrt fájl végére, vagy a "fő" fájl switch utasítás végére tudjak ugrani (goto szerű utasítás nélkül)?
 
1

függvények? osztályok?

T.G · 2004. Ápr. 22. (Cs), 08.46
Nem pontosan értem a kérdést. De mi lenne akkor, ha kilépnél abból a fajta programozási stílusból, melyben egymás utáni sorokat hajtod végre, és néha-néha ugrasz egyet?
Nem azt mondom, hogy mindenáron szabadulj meg a break utasításoktól ill. switch szerkezetektől, de azért ahova nem kell oda ne használd!
2

Szóval a következőt csiná

fchris82 · 2004. Ápr. 22. (Cs), 10.16
Szóval a következőt csinálom :)

Van egy központi fájl, ez az index.php . Hogy mi jelenik meg a felhasználónak, azt egy ID alapján dönti el az index.php . Tehát ott az megy, hogy
...
case '03' : $file = 'regisztracio.php'; break;
...
include($file);

Itt nincs semmi gond, ez így mükszik.

Namost ennek a fájlnak az elején van az, hogy
include('action.php');
Ez a fájl, a $_POST['act'] vagy $_GET['act'] alapján dönti el, hogy mit csinál (már ha egyáltalán éppen léteznek ezek a változók). A bibi itt kezdődik.
Ugyanis ezek úgy működtek, pl:
...
case 'regisztracio' :
if( !isset($_POST['nev'] )
{
$_hibauzenet = "Nincs megadva a név.<br>";
$_pgID = '03';
BREAK;
}
elseif( ... (további ellenőrzés)
...
(művelet az adatokkal)
$_pgID = '04';
BREAK;

Ez most csak egy példa volt. Még ezt könnyen tudnám javítani, mert if-else-vel megoldható, de vannak ellenőrzések, amikor nem! (pl hogy ha fájl feltöltés is van, akkor ugye az egy eset, hogy nincs megadva semmi, és akkor nem is kell ellenőrizni, hogy fel van-e töltve a fájl, ugyanakkor ha van megadva vmi, akkor ellenőrizni kell, hogy feltöltésre került-e. És mindkettő után ugyan azt kéne csinálni. If-else-vel ez nem megy, mert átláthatatlan is lesz, és/vagy ismételnem kell egyes kódsorokat :-/ )
Namost nem szeretnék 100 fv-t definiálni, hogy ekkor ezt csináld, akkor meg azt. Persze ha nincs jobb ötlet, kénytelen leszek :-/
3

De mit is akarsz csinálni?

js · 2004. Ápr. 22. (Cs), 19.54
Szerintem inkább azt írd meg, hogy mit akarsz csinálni, mert ez így egy kicsit kusza. Egyébként hidd el, hogy a függvények nem véletlenül lettek belerakva a php-ba. Nagyobb bonyolultságú logikát nem illik spagetti-kódba rakni, mert egy hét múlva már nem fogod tudni, hogy hova is kell nyúlni, ha valami baj van.
---jul
4

ok, meggyőztetek :)

fchris82 · 2004. Ápr. 23. (P), 14.31
Marad a függvényes megoldás :)

Egyébként:
Amikor érkezik egy form, akkor abban van egy olyan változó, hogy act. Ilyen pl, a $_POST['act']=regisztracio. Namost ez alapján dönti el a program, hogy milyen adatok érkeznek, és azokkal mit is kell csinálni, továbbá hogy ha minden rendben, akkor hova "ugorjon". Így a form mindig ugyan az (na, mondjuk nem ezért lett így csinálva :D ) :
<form action="index.php">