Evästeet, sessiot ja tiedostot sekä 4. viikkotehtävä - Luento 10
Luentotaltiointi
- sovellukset10.mp3 16M
- sovellukset10.wmv 68M
- sovellukset10.avi 223M
Jatketaan PHP:n evästeiden, sessioiden, tiedostojen lataamisen ja tiedostojen käsittelyn läpikäymistä esimerkkien avulla. Lisäksi käydään läpi neljättä viikkotehtävää.
Neljäs viikkotehtävä
Neljännen viikkotehtävän tilastoja:
Katsellaan seuraavia asioita:
- Mallivastaukset
- Tehtävänanto oli ilmeisesti hiukan epäselvä, koska joillakin oli vaikea tietää mitä tehtävässä haettiin. Tämän vuoksi tehtävä on arvosteltu aika löysästi, pisteitä on siis tullut vaillinnaisistakin ratkaisuista.
- Monet olivat tehneet 3. ja 5. tasoilla vain kaksi eri listaa, eli poistoja ja päivityksiä ei oltu toteutettu ollenkaan. Joillakin kyseiset metodit kuitenkin löytyivät luokista, mutta niitä ei kutsuttu missään. Muutoksia ei siis oltu ymmärretty tehdä hiddeneistä muodostetulle listalle. Päivitys & poisto ei ole siis sama kuin uuden luominen vanhojen tilalle!
- Lomake kannattaisi tehdä silmukassa, niin koodi lyhenee huomattavasti.
- Labeleita tulisi käyttää aina, kun tehtävään liittyy lomakekenttiä.
- Radiobuttoneille tulee aina laittaa oletusarvo, muuten sovellus ei välttämättä toimi oikein.
- Hidden-kenttään olisi voinut viedä myös suoraan olion serialisoimalla sen (PHP:ssä on tähän omat funktiot serialize() ja unserialize()).
- Taulukon läpikäymisessä joillakin for-rakenne, vaikka foreach olisi paljon helpompi.
- for-rakenteen kanssa tulee ongelmia silloin, kun taulukon keskeltä poistetaan arvoja.
- Ratkaisuna ongelmaan oli muun muassa muiden taulukon arvojen siirto yhden pykälän vasemmalle tai array_search()-funktion käyttö.
- foreach-rakenteen kanssa vastaavia kikkailuja ei tarvita.
- Taulukosta poisto tulisi tehdä unset()-funktiolla, eikä asettamalla kyseisen taulukon solun arvoksi NULL tai tyhjä.
- Sitä onko taulukossa olemassa arvoja ei voi tietää varmuudella pelkästään tarkistamalla taulukon indeksin 0 sisältöä. Testi toimisi muokkaamattomalle taulukolle, muttei enää silloin, jos indeksistä 0 olisi poistettu arvo. Taulukkoa ei siis indeksoida poiston jälkeen uudelleen automaattisesti.
- Olioiden samankaltaisuutta testatessa on vaarallista verrata suoraan olioita keskenään. Tehtävässä se toimi, mutta jos olioilla olisi ollut vaikka joku yksilöivä id-kenttä, niin ei olisi enää toiminut.
- Oliotaulukon järjestäminen sattui toimimaan myös suoraan sort()-funktiolla, koska järjestettävillä olioilla oli vain yksi attribuutti (järjestäminen tehtiin siis sen mukaan). Parempi on käyttää usort()-funktiota, jolle saa antaa oman järjestämisfunktion. Se toimii siis monimutkaisemmillakin olioilla.
- Transaktion toteuttaminen vaikutti olleen erittäin vaikeaa, kannattaa perehtyä mallivastauksen kyseiseen toteutukseen.
Evästeet, sessiot ja tiedostot
Teoriat käytiin läpi luennolla 9.
Tehdään luennolla esimerkkejä eri aiheisiin liittyen.
Luennolla tehty esimerkkitiedosto.

Käyttäjien kommentit