/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
settype()
Fra : Lars Olesen


Dato : 06-04-04 19:56

Jeg bruger altid indstillingen, at PHP skal vise alle advarsler. Det
gør, at jeg tvinges til at sørge for at alle variable er erklæret.

Det kan man jo gøre på forskellig måde:

(Følgende forudsat, at jeg ikke ved, om $eid faktisk er sat)

settype($_POST['eid'], "integer");

eller

if (!isset($_POST['eid'])) { $eid = 0; }
else { $eid = (int)$eid; }

Jeg synes jo klart, at det øverste er mest elegant, men er det også
ordentlig programmeringsskik, hvis man fx starter alle scripts med at
lave settype() på de variable, man skal bruge?

--
Lars Olesen
Kan det gøres bedre? Struktur, navigation og brugervenlighed!
Betingelser findes på <http://www.fodboldenslegestue.dk>
Forslag afleveres inden 1. juli 2004

 
 
Bertel Lund Hansen (06-04-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 06-04-04 20:33

Lars Olesen skrev:

>Jeg synes jo klart, at det øverste er mest elegant, men er det også
>ordentlig programmeringsskik, hvis man fx starter alle scripts med at
>lave settype() på de variable, man skal bruge?

Jeg ved ikke om det bruges ved PHP, men i f.eks. C og Java er man
automatisk nødt til det fordi en variabel skal erklæres med en
type før den overhovedet kan bruges. Det kan man så godt kalde
god skik ...

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Kristian Thy (06-04-2004)
Kommentar
Fra : Kristian Thy


Dato : 06-04-04 20:43

Bertel Lund Hansen uttered:
> Jeg ved ikke om det bruges ved PHP, men i f.eks. C og Java er man
> automatisk nødt til det fordi en variabel skal erklæres med en
> type før den overhovedet kan bruges. Det kan man så godt kalde
> god skik ...

"God skik" kan man da godt kalde det - det fanger i hvert fald nok
nogle småfejl engang imellem. Men i bund og grund handler det om at
PHP er implementeret med et andet grundparadigme end fx C og Java -
PHP har et dynamisk typesystem, hvor C og Java har statiske typer. Det
giver selvfølgelig mulighed for at lave typefejl, men man får samtidig
mulighed for at udnytte sproget på en helt anden måde når en variabel
på skift kan indeholde fx en int, et array og et objekt.

Hvis man som Lars alligevel insisterer på at bruge PHP som et sprog
med statiske typer, så vil jeg foreslå at man kigger på ML Server
Pages. MSP er en tilpasning af Moscow ML til webservere, og Moscow ML
har den dejlige fordel at det ikke alene har statiske typer, det har
også typeinferens - dvs. at compileren selv regner ud om der er tale
om en int eller en liste, så man sparer igen alle de eksplicitte
typeebetegnelser.

http://ellemose.dina.kvl.dk/~sestoft/msp/index.msp

\\kristian
--
Linux like tee-pee: No windows, no gates, Apache inside

Lars Olesen (06-04-2004)
Kommentar
Fra : Lars Olesen


Dato : 06-04-04 20:59

Kristian Thy wrote:

> Hvis man som Lars alligevel insisterer på at bruge PHP som et sprog
> med statiske typer

Det insisterer jeg nu ikke på :) Det er mest i forbindelse med fx
userinput, at det er godt at vide, hvilke typer man forventer, synes
jeg. Fx hvis det er et sideid!

Men hvis man ikke bruger settype, så skal man sørge for - ved variable
der ikke er defineret - at bruge den nederste skitserede løsning, hvis
man bruger error_reporting all. Og det er vel den bedste måde at kode på
- hvis man tænker rent sikkerhedsmæssigt?


--
Lars Olesen
Kan det gøres bedre? Struktur, navigation og brugervenlighed!
Betingelser findes på <http://www.fodboldenslegestue.dk>
Forslag afleveres inden 1. juli 2004

Kristian Thy (06-04-2004)
Kommentar
Fra : Kristian Thy


Dato : 06-04-04 22:12

Lars Olesen uttered:
> Det insisterer jeg nu ikke på :) Det er mest i forbindelse med fx
> userinput, at det er godt at vide, hvilke typer man forventer, synes
> jeg. Fx hvis det er et sideid!

Helt sikkert. Stol aldrig på brugeren :)
(og så er det også rart at have magic_quotes slået til...).

\\kristian
--
"And then Trogdor smote the Kerrek,
and all was laid to burnination"
--Strong Bad

Lars Olesen (06-04-2004)
Kommentar
Fra : Lars Olesen


Dato : 06-04-04 22:20

Kristian Thy wrote:

> Helt sikkert. Stol aldrig på brugeren :)
> (og så er det også rart at have magic_quotes slået til...).

Jep, det er jo bare ikke altid, man selv kan bestemme det :)

--
Lars Olesen
Kan det gøres bedre? Struktur, navigation og brugervenlighed!
Betingelser findes på <http://www.fodboldenslegestue.dk>
Forslag afleveres inden 1. juli 2004

Jonas Delfs (08-04-2004)
Kommentar
Fra : Jonas Delfs


Dato : 08-04-04 15:27

"Kristian Thy" <thy@it.edu> skrev i en meddelelse
news:c4v6eq$2n5l8b$1@ID-157676.news.uni-berlin.de...
> (og så er det også rart at have magic_quotes slået til...).

Uenig. Det er min erfaring at magic_quotes(_gpc) sjældent giver andet end
bøvl. Du ved ikke hvad du har med at gøre og ender med dobbelt-escapede
tegn, som så skal renses, hvilket ikke er kønt. Man sørger nødvendigvis for
selv altid at sikre sit input, da man ikke kan regne med andet, og netop
derfor bliver magic-quotes bare sk*de irriterende hvis er slået til på den
server man lejlighedsvis benytter.
magic_quotes hjælper nybegynderen til ikke at skrive så usikre scripts, men
det lærer han ikke noget af.

Blot min holdning til fænomenet.:)

--
Mvh. Jonas Delfs, http://delfs.dk



Troels Arvin (08-04-2004)
Kommentar
Fra : Troels Arvin


Dato : 08-04-04 15:31

On Thu, 08 Apr 2004 16:26:30 +0200, Jonas Delfs wrote:

> Det er min erfaring at magic_quotes(_gpc) sjældent giver andet end
> bøvl.

Enig. Det er møgirriterende, hvis PHP ændrer i éns input. Og det gør
det i øvrigt besværligt at hjælpe begyndere:
- "Inden jeg kan svare, skal jeg lige vide, om magic_quotes_gpc er
slået til eller fra"
- "Hva?!"
- "Jo, altså...".

--
Greetings from Troels Arvin, Copenhagen, Denmark


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste