Paranna Morpion-pelin kansainvälisiä ennätyksiä!
Ohjeet | Nettipeli | Tuloslista
Suunnittele tiedosto, josta tulee suuri ZIP-paketti!
Vastauksia: 32
Paras: 1158
No eihän siinä mitään vikaa ole, imho. Eikö tässä juuri todettu, että kysyjä ei saa sitä (C / C++ ja Delphi / Pascal) lisää...
Keskustelu: Nettisivut ja -ohjelmointi: php: require/include funktiossa
| B_R_H [02.02.2010 12:18:29] | Lainaa | Muokkaa |
| Terve,
Tuli tuossa lähinnä mieleen, ei tullut vielä suorituksessa vastaan - toivottavasti ei tulekkaan. Miten muistinhallinnan yms. kannalta tuo require-mahtaa käyttäytyä? jos mulla on lyhyt fuktion tyyliin:
| ||
| Teuro [02.02.2010 12:39:25] | Lainaa | Muokkaa |
| Mielummin sivun alkuu ja vielä require_once(), jolloin tiedosto sisällytetään vain kerran. Lisäämisen jälkeen funktioiden pitäisi olla näkyvyysalueella kyseisessä tiedostossa.
| ||
| B_R_H [02.02.2010 16:17:45] | Lainaa | Muokkaa |
| Yep noin se yleensä on tullut tehtyä.
Kokeilin tuota require_oncea samassa funktiossa ja käyttäytyi siten, että eka toimii ja on käytettävissä, mutta toisella kerralla ei tunnista funktiot ollenkaan. Require toimii ok. | ||
| Teuro [02.02.2010 16:27:58] | Lainaa | Muokkaa |
| Älä laita sitä funktioon, vaan sivun alkuun. Sisällytys pitää tehdä siis vain kerran sivun alussa, jonka jälkeen funktiot ovat käytettävissä.
| ||
| LaNu [02.02.2010 18:01:50] | Lainaa | Muokkaa |
| tiedosto1.php:
haenimi on täsmälleen sama funktio kuin nimi, kannattaa haenimi-funktion runko pistää suoraan nimi-funktioon eikä turhaan tupla-kääriä sitä.
Eli näin, tiedosto1.php:
| ||
| B_R_H [03.02.2010 10:12:12] | Lainaa | Muokkaa |
| Kiitti! Nuo on ihan selvät.
Tätä samaa vielä miettien: *Mitenkä tämmöinen on hoideltu esim. jaettavissa moduleissa. Sielläkin taitaa olla jonkin verran includeja? | ||
| Metabolix [03.02.2010 12:49:37] | Lainaa | Muokkaa |
| Aivan kuten yllä, oliko tässä sinusta jotain ihmeellistä?
Yleispätevänä sääntönä voi sanoa, että funktio on väärä paikka include-riveille. Säännöstä saa poiketa vasta, kun keksii jonkin syyn, jonka muutkin tunnustavat todelliseksi. Itse en ole vielä tarpeeksi hyvään syyhyn törmännyt. | ||
| B_R_H [03.02.2010 13:08:56] | Lainaa | Muokkaa |
| >Aivan kuten yllä, oliko tässä sinusta jotain ihmeellistä?
Eipä siinä. >Yleispätevänä sääntönä voi sanoa, että funktio on väärä paikka >include-riveille. Se on ihan hyvä sääntö. Tämmöinen tuli vielä mieleeni samasta asiasta: Jos funktiossa käytetään vaikka "joitakin ohjelman alustusmuuttujia". Ne ovat erillisessä tiedostossa vaikka pelkkinä sijoituslauseina, niin eikös ainakin nimikonfliktien vuoksi ne olisi hyvä tehdä vain funktion sisäisiksi muuttujiksi juuri includella vaikka sotii sääntöä vastaan? | ||
| tsuriga [03.02.2010 16:10:24] | Lainaa | Muokkaa |
| Oikea-Tapa™ on käyttää jotain asetusformaattia, kuten ini, yaml, jne. (ja luokkia). Konflikteja kannattaa ennaltaehkäistä ehdottomasti jo suunnitteluvaiheessa. | ||
| Metabolix [03.02.2010 16:15:14] | Lainaa | Muokkaa |
| Keksitkö jonkin esimerkin, jossa olisi kaksi samannimistä asiaa? Yleensä aloittelijoiden "nimikonfliktit" johtuvat huonosta nimeämisestä. Jos muuttujan tai funktion nimi kertoo oikeasti, mihin sitä käytetään, konflikteja ei lähes koskaan tule. Kärjistetty esimerkki: $nimi ja $nimi versus $etunimi ja $sukunimi. | ||
| B_R_H [03.02.2010 19:20:30] | Lainaa | Muokkaa |
| ootte ihan oikeassa. Tämä nyt lähinnä tietämättömän pohdintaa. Tuo include funktiossa vaan selventäisi koodia.
Kerran oon törmännyt samannimiseen. Edellä oli määritelty taulukko, muistaakseni kayttajatunnus ja myöhemmin koodissa viitattiin eri tarkoituksessa ja kappas input-kentässä luki yllättäen array. | ||
| Metabolix [03.02.2010 20:06:57] | Lainaa | Muokkaa |
| Käyttäjätunnustaulukon ei varmasti pitäisi olla globaali eikä myöskään samalla näkyvyysalueella minkään tulostamiseen liittyvän kanssa. (Tai jos kyseessä on sivulle tulostettava tieto, miksi nimi on $kayttajatunnus eikä esimerkiksi $kirjautuneet_kayttajat tai muuta kuvaavampaa?) Kyseessä on siis tyypillinen amatöörimainen suunnitteluvirhe. | ||
Tämä aihe on yli kuukauden vanha, eikä siihen voi enää lähettää uusia viestejä.
ylläpito Antti Laaksonen, ulkoasu Otto Seiskari