/ 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
Kan man gennemtvinge erklæringer i PHP?
Fra : Per Erik Rønne


Dato : 23-03-07 13:38

Er der en måde at tvinge PHP til kun at acceptere erklærede variable,
funktioner og klasser? Som man finder det i eksempelvis Visual Basic?

Og endnu en ting: Jeg har på nettet set at PHP /som regel/ gør forskel
mellem store og små bogstaver i navne på identifikatorer. "Som regel"
virker ikke rigtigt smart ;-(.
--
Per Rønne.

 
 
ulrik nielsen (23-03-2007)
Kommentar
Fra : ulrik nielsen


Dato : 23-03-07 13:53

Per Erik Rønne wrote:
> Er der en måde at tvinge PHP til kun at acceptere erklærede variable,
> funktioner og klasser? Som man finder det i eksempelvis Visual Basic?
>
> Og endnu en ting: Jeg har på nettet set at PHP /som regel/ gør forskel
> mellem store og små bogstaver i navne på identifikatorer. "Som regel"
> virker ikke rigtigt smart ;-(.

1: jeg tror jeg vil sige nej, men jeg er ik helt sikker på hvad det er
du mener.
der er ikke en "strict mode" i php, så du vil altid kunne tilgå
variabler der ikke er defineret.
- dog kan du sætte error_level til E_STRICT og så rapportere den alle de
variabler der ikke er defineret.


2: der er altid forskel på store og små bogstaver.

--
ulrik nielsen |
-----------------+---------------------------------------------------
quote or the day | need to wrap system in aluminum foil to fix
| problem
from bofh | http://www.cs.wisc.edu/~ballard/bofh/

Per Erik Rønne (23-03-2007)
Kommentar
Fra : Per Erik Rønne


Dato : 23-03-07 14:25

On Fri, 23 Mar 2007 13:52:32 +0100, ulrik nielsen wrote:

> Per Erik Rønne wrote:
>> Er der en måde at tvinge PHP til kun at acceptere erklærede variable,
>> funktioner og klasser? Som man finder det i eksempelvis Visual Basic?
>>
>> Og endnu en ting: Jeg har på nettet set at PHP /som regel/ gør forskel
>> mellem store og små bogstaver i navne på identifikatorer. "Som regel"
>> virker ikke rigtigt smart ;-(.
>
> 1: jeg tror jeg vil sige nej, men jeg er ik helt sikker på hvad det er
> du mener.
> der er ikke en "strict mode" i php, så du vil altid kunne tilgå
> variabler der ikke er defineret.
> - dog kan du sætte error_level til E_STRICT og så rapportere den alle de
> variabler der ikke er defineret.

Det må jeg så til at se nærmere på. Jeg 'kommer fra' stærkt /typede/ sprog,
og mit første programmeringssprog, på datalogi 0 på DIKU, var Pascal.

Det er mildest talt ikke smart at man grundet fejltastninger pludselig står
med to forskellige variable i stedet for en.

Ej heller bryder jeg mig om subrutine-erklæringer midt i koden, eller i at
man pludselig ser en gentagen subrutine-erklæring grundet en tidligere
programmørs lidt for ihærdige /copy and paste/.

> 2: der er altid forskel på store og små bogstaver.

På:

<http://php.comsci.us/etymology/identifiers.html>

kan man bl.a. læse følgende:

=
Php is /usually/ case sensitive - that is, upper case letters are
considered to be different from the corresponding lower case letters in
identifiers and keywords.
=

Det kunne jo tyde på at der var forskel mellem hvordan php kørte på
forskellige platforme.

MooreHojer (23-03-2007)
Kommentar
Fra : MooreHojer


Dato : 23-03-07 13:53

> Er der en måde at tvinge PHP til kun at acceptere erklærede variable,
> funktioner og klasser? Som man finder det i eksempelvis Visual Basic?

Så vidt jeg ved kan det ikke gøres direkte, men hvis du har adgang til
php.ini under udvikling kan du sætte PHP til at vise fejlmeddelser når
du forsøger at bruge en variabel der ikke er erklæret. hvilket nivau den
skal indstilles til kan jeg ikke huske på stående fod, men jeg mener det
er notice eller strict


Per Erik Rønne (23-03-2007)
Kommentar
Fra : Per Erik Rønne


Dato : 23-03-07 14:29

On Fri, 23 Mar 2007 13:53:29 +0100, MooreHojer wrote:

>> Er der en måde at tvinge PHP til kun at acceptere erklærede variable,
>> funktioner og klasser? Som man finder det i eksempelvis Visual Basic?
>
> Så vidt jeg ved kan det ikke gøres direkte, men hvis du har adgang til
> php.ini under udvikling kan du sætte PHP til at vise fejlmeddelser når
> du forsøger at bruge en variabel der ikke er erklæret. hvilket nivau den
> skal indstilles til kan jeg ikke huske på stående fod, men jeg mener det
> er notice eller strict

Det ser ud som om det er noget af det der står omtalt i nedenstående link:

<http://www.php.net/manual/en/function.error-reporting.php>

der skal bruges.

Per Erik Rønne (23-03-2007)
Kommentar
Fra : Per Erik Rønne


Dato : 23-03-07 15:11

On Fri, 23 Mar 2007 14:29:18 +0100, Per Erik Rønne wrote:

> On Fri, 23 Mar 2007 13:53:29 +0100, MooreHojer wrote:
>
>>> Er der en måde at tvinge PHP til kun at acceptere erklærede variable,
>>> funktioner og klasser? Som man finder det i eksempelvis Visual Basic?
>>
>> Så vidt jeg ved kan det ikke gøres direkte, men hvis du har adgang til
>> php.ini under udvikling kan du sætte PHP til at vise fejlmeddelser når
>> du forsøger at bruge en variabel der ikke er erklæret. hvilket nivau den
>> skal indstilles til kan jeg ikke huske på stående fod, men jeg mener det
>> er notice eller strict
>
> Det ser ud som om det er noget af det der står omtalt i nedenstående link:
>
> <http://www.php.net/manual/en/function.error-reporting.php>
>
> der skal bruges.

Efter lidt googling ser det ud til, at en alternativ måde vil være en
kompilator, der som option har kravet om erklæringer og med stærk
typekontrol.

Og naturligvis så kode der kører i oversat form. Fordelen ved
erklærings-tvangen er naturligvis at kompilatoren fanger en bunke fejl, der
ellers først opdages senere - hvis de overhovedet opdages.
--
Per Rønne

ulrik nielsen (23-03-2007)
Kommentar
Fra : ulrik nielsen


Dato : 23-03-07 20:35

Per Erik Rønne wrote:
> On Fri, 23 Mar 2007 14:29:18 +0100, Per Erik Rønne wrote:
> Efter lidt googling ser det ud til, at en alternativ måde vil være en
> kompilator, der som option har kravet om erklæringer og med stærk
> typekontrol.

hmm, findes en sådanne ?
php som sprog er jo ikke typefast, der kan ikke oprettes en char
variabel du ikke senere kan rette til en int...
- det er lige som en af grundiderne bag php

ved at sætte error_reporting til E_STRICT vil du jo alligevel være
istand til at fange alle ikke instantierede variabler, så jeg er ikke
helt med på hvad du vil opnå.

> Og naturligvis så kode der kører i oversat form. Fordelen ved
> erklærings-tvangen er naturligvis at kompilatoren fanger en bunke fejl, der
> ellers først opdages senere - hvis de overhovedet opdages.

jojo, men se ovenfor.

grunden til at precompile det er mere hastighed end noget andet.
- ja og så det at andre så ikke kan læse hvad du har skrevet :)


--
ulrik nielsen |
-----------------+---------------------------------------------------
quote or the day | Of course it doesn't work. We've performed a
| software upgrade.
from bofh | http://www.cs.wisc.edu/~ballard/bofh/

Per Rønne (23-03-2007)
Kommentar
Fra : Per Rønne


Dato : 23-03-07 21:47

ulrik nielsen <un.spam@tiscali.dk> wrote:

> Per Erik Rønne wrote:
> > On Fri, 23 Mar 2007 14:29:18 +0100, Per Erik Rønne wrote:
> > Efter lidt googling ser det ud til, at en alternativ måde vil være en
> > kompilator, der som option har kravet om erklæringer og med stærk
> > typekontrol.
>
> hmm, findes en sådanne ?

Det ser sådan ud, men jeg er ikke sikker.

> php som sprog er jo ikke typefast, der kan ikke oprettes en char
> variabel du ikke senere kan rette til en int...
> - det er lige som en af grundiderne bag php

En af de lidt mere ubehagelige.

> ved at sætte error_reporting til E_STRICT vil du jo alligevel være
> istand til at fange alle ikke instantierede variabler, så jeg er ikke
> helt med på hvad du vil opnå.

At sådanne fejl fanges af en kompilator, ikke kun ved en kørsel.

> > Og naturligvis så kode der kører i oversat form. Fordelen ved
> > erklærings-tvangen er naturligvis at kompilatoren fanger en bunke fejl, der
> > ellers først opdages senere - hvis de overhovedet opdages.
>
> jojo, men se ovenfor.
>
> grunden til at precompile det er mere hastighed end noget andet.
> - ja og så det at andre så ikke kan læse hvad du har skrevet :)

Det synes at spille en rolle, rent kommercielt, ja.
--
Per Erik Rønne
http://www.RQNNE.dk

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste