Forum und email

Konstanter

Table of Contents

En konstant är en identifierare (ett namn) med ett enkelt värde. Precis som namnet antyder är det ett värde som inte kan ändras under skriptets körning (med undantag för magiska konstanter, som egentligen inte är konstanter). En konstant är teckenkänslig som standard. Enligt en allmänt accepterad uppfattning så ska konstantnamnen alltid skrivas med versaler.

Namnet på en konstant följer samma regler som vilken variabel som helst i PHP. Ett korrekt konstantnamn börjar med en bokstav eller ett understreck, följt av ett antal siffror, nummer eller understreck. Som ett reguljärt uttryck, skulle det uttryckas så här: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Note: En bokstav är här definierat som a-z, A-Z och ASCII-tecknen 127 till 255 (0x7f-0xff). Detta innebär att våra svenska tecken (å, ä och ö) kan användas.

Liksom superglobals är konstanternas räckvidd global. Du kan komma åt konstanter vart som helst i ditt skript utan att behöva tänka på räckvidden. För mer information om räckvidd, läs mer i kapitlet om räckvidd.

Syntax

Du kan definiera en konstant genom att använda define()-funktionen. När en konstant har blivit definierad kan den aldrig ändras eller bli odefinierad igen.

Konstanter kan bara innehålla värden av datatyper som boolean, integer, float och string

Du kan få ut konstantens värde genom att helt enkelt skriva dess namn. I motsats till variabler ska du inte ha ett dollartecken ($) framför dess namn. Du kan också använda funktionen constant() för att läsa en konstants värde om du vill kunna få namnet dynamiskt med hjälp av en variabel. Använd funktionen get_defined_constants() för att få en få en lista med alla definierade konstanter.

Note: Konstanter och (globala) variabler ligger i olika namnutrymmen. Detta betyder att till exempel TRUE och $TRUE vanligtvis är olika.

Om du använder en odefinierad konstant så tror PHP att du menar namnet på själva konstanten som om det vore en string (jämför KONSTANT och "KONSTANT"). Ett fel på E_NOTICE-nivån kommer att utfärdas om detta händer. Läs också om varför $foo[bar] är fel att skriva (om du inte först definerat bar som en konstant). Vill du se om en konstant är definierad kan du använda funktionen defined().

Skillnaderna mellan konstanter och variabler:

  • Konstanter har inte ett dollartecken ($) före namnet;
  • Konstanter kan bara definieras genom att använda funktionen define() och inte genom vanlig tilldelning;
  • Konstanter kan definieras och kommas åt överallt utan hänseende till räckvidder på variabler;
  • Konstanter får inte omdefinieras eller bli odefinierade när de väl har blivit satta; och
  • Konstanter får bara innehålla värden av enkla typer. (boolean, integer, float och string)

Example#1 Definiera konstanter

<?php
define
("KONSTANT""Hej världen.");
echo 
KONSTANT// skriver ut "Hello world."
echo Konstant// skriver ut "Konstant" och utfärdar en notis.
?>