Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

1 (edited by DY 2007-12-30 08:55:16)

Topic: "Goto" komandos

Kiek žinau, komanda "goto" PHP neegzistuoja (pataisykite, jei klystu). Gal yra koks nors geras būdas tai apeiti ir su kokiomis nors kitomis komandomis realizuoti šios komandos funkcionalumą?

čia turiu omeny komandą, kuri leidžia nurodyti, nuo kurios vietos toliau turėtų būti vykdomas programinis kodas.

Dar vienas dalykas: ar yra komanda, leidžianti panašiu principu papildyti jau parašytą HTML dokumento dalį (t.y. su "print"/"echo" prirašyti ne kažką į galą, o į tam tikrą nurodytą sudarinėjamo HTML dokumento vietą)?

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.

Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Re: "Goto" komandos

Dėl pirmo klausymo nežinau, bet dėl antro tai aš darau taip, pirma visą info kuri turi būti print'inama sukeliu į vieną kintamajį. Tam galima pasidaryti savo funkcija. O tik tada pačiam gale šį kintamajį išspausdinu. Tai vat, prieš spausdinant aš su šituo kintamuoju ką noriu tą galiu daryti.

Re: "Goto" komandos

DY wrote:

Kiek žinau, komanda "goto" PHP neegzistuoja (pataisykite, jei klystu). Gal yra koks nors geras būdas tai apeiti ir su kokiomis nors kitomis komandomis realizuoti šios komandos funkcionalumą?

čia turiu omeny komandą, kuri leidžia nurodyti, nuo kurios vietos toliau turėtų būti vykdomas programinis kodas.

šiaip jau daug metų GOTO (ar analogų) naudojimas yra laikomas blogu tonu (bloga praktika) programavime. GOTO daro kodą sunkiai skaitomu, sunkiai suprantamu. Todėl geriau pamirškite GOTO ir spręskite užduotį kitais būdais. Man atrodo nėra tokio kodo su GOTO, kurio neįmanoma parašyti be GOTO (čia kalbu apie PHP, gal kokiam BASIC'e ir sunkiau). Juk yra visos struktūrų kontrolės funkcijos/operatoriai, tokie kaip: if/else, switch, ciklai ir pan., kurių pagalba TIKRAI galima viską realizuoti be GOTO.

DY wrote:

Dar vienas dalykas: ar yra komanda, leidžianti panašiu principu papildyti jau parašytą HTML dokumento dalį (t.y. su "print"/"echo" prirašyti ne kažką į galą, o į tam tikrą nurodytą sudarinėjamo HTML dokumento vietą)?

Vėlgi, jeigu kyla noraiskaidyti kodą gabalai ir kontroliuoti kada ką išvesti tai reikia paieškoti programavimo eiliškumo spragų.

Tiesa, tam reikalui yra skirtos specialios funkcijos: http://lt.php.net/manual/en/ref.outcontrol.php

Bet... bet kam reikia vykdyti kodą (generuoti HTML'ą) ir paskui nuspręsti, kad jo vistik nereikia išvedinėti? Juk TIKRAI galima suprogramuoti taip, kad nereikalingas kodas nebūtų vykdomas.

4 (edited by DY 2008-01-02 18:35:29)

Re: "Goto" komandos

Dėl goto tai tiesiog šiuo būdu kai kada paprasčiau ar greičiau galima viską padaryti; gali būti aktualu, pavyzdžiui, kuriant tam tikrą laikiną sąsają skirtą veikti kol neįvesti į duomenų bazę tam tikri duomenys, o jei esi vienintelis tinklapio administratorius tai kodo suprantamumas nėra labai svarbus. Na bet jei tokios galimybės nėra reiškia reikės daryti kitais būdais.

Dėl kodo išvedimo, tai čia man yra tokia situacija: sudarinėjama lentelė pagal duomenų bazės duomenis. šiaip viskas eina su ciklu, tačiau pirma eilutė, kur išvedami stulpelių pavadinimai, yra įrašoma bet kuriuo atveju prieš prasidedant ciklui. čia susiję su tuo, ką minėjau čia: http://www.mysql.lt/forumas/viewtopic.php?id=425 . Taigi, vienas lentelės stulpelis atitiktų pavadinimus kompanijų, kuriose, be tos, apie kurią informacija pateikiama, yra dirbęs darbuotojas (lentelės eilutėse - darbuotojai). Jeigu visi darbuotojai dirbę tik šioje vienoje kompanijoje iš duomenų bazėje esančių tai to stulpelio iš viso nereikia. Patogiausias sprendimas mano galva būtų po pirmo atvejo kai ciklas aptinka, kad kažkuris darbuotojas yra dirbęs ir kitoje kompanijoje, "grįžti atgal" ir prirašyti pirmoje eilutėje "<td>Kur dar dirbo</td>". Kitas sprendimas yra pradžioje paleisti tokią funkciją, kokią aš parašiau toje kitoje temoje, ir jei ji grąžina bent vieną eilutę - pradėti tą stulpelį. Dabar esu taip padaręs, bet tai papildoma gana lėta funkcija.

Mintys - blogas apie gyvenimą, politiką, ekonomiką, kultūrą, mokslą ir kitką.
Adventure Lietuva - kompiuteriniai žaidimai, kurie yra meno forma.
Pasaulio šalių himnai - įrašai, žodžiai ir jų vertimai, informacija.