Syntax: Skillnad mellan sidversioner
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
Admin (diskussion | bidrag) (→Syntax) |
||
(2 mellanliggande sidversioner av samma användare visas inte) | |||
Rad 1: | Rad 1: | ||
== Syntax == | == Syntax == | ||
Konstanter kan definieras med nyckelordet ''const'' eller genom att använda funktionen ''define()''. Medan ''define()'' tillåter att en konstant definieras till ett godtyckligt uttryck, har nyckelordet ''const'' begränsningar som beskrivs i nästa stycke. När en konstant är definierad kan den aldrig ändras eller tas bort. När du använder nyckelordet ''const'', accepteras endast skalära (bool, int, float och string) uttryck och konstanta arrayer som innehåller enbart skalära uttryck. Det är möjligt att definiera konstanter som en resurs, men det bör undvikas, eftersom det kan leda till oväntade resultat. Värdet på en konstant nås enkelt genom att ange dess namn. Till skillnad från variabler föregås inte en konstant av ett $. Det är också möjligt att använda funktionen ''constant()'' för att läsa en konstants värde om konstantens namn erhålls dynamiskt. Använd ''get_defined_constants()'' för att få en lista över alla definierade konstanter. | |||
'''Notera''': Konstanter och (globala) variabler finns i olika namnrymder. Detta innebär att till exempel ''true'' och ''$TRUE'' generellt är olika. | |||
Om en odefinierad konstant används kastas ett fel. Före PHP 8.0.0 skulle odefinierade konstanter tolkas som en enkel ordsträng, d.v.s. (CONSTANT vs "CONSTANT"). Denna återfall är föråldrad från och med PHP 7.2.0, och ett fel av nivån [[E_WARNING]] utfärdas när det händer. | |||
Före PHP 7.2.0 utfärdades ett fel av nivån [[E_NOTICE]] istället. Se även manualposten om varför $foo[bar] är felaktigt (om inte bar är en konstant). Detta gäller inte för (fullständigt) kvalificerade konstanter, vilka alltid kommer att resultera i ett fel om de är odefinierade. | |||
'''Notera''': För att kontrollera om en konstant är inställd, använd funktionen ''defined()''. | |||
==== Här är skillnaderna mellan konstanter och variabler: ==== | |||
* Konstanter har inte ett dollartecken ($) framför dem | * Konstanter har inte ett dollartecken ($) framför dem | ||
* Konstanter kan definieras och nås var som helst oberoende av variabelns omfångsregler | * Konstanter kan definieras och nås var som helst oberoende av variabelns omfångsregler | ||
Rad 8: | Rad 19: | ||
<br>'''Exempel #1 Definiera konstanter''' | <br>'''Exempel #1 Definiera konstanter''' | ||
<br><code><br><?php | |||
<br><code> | |||
<br><?php | |||
<br>define("CONSTANT", "Hej världen."); | <br>define("CONSTANT", "Hej världen."); | ||
<br>echo CONSTANT; // skriver ut "Hej världen." | <br>echo CONSTANT; // skriver ut "Hej världen." |
Nuvarande version från 15 augusti 2024 kl. 05.23
Syntax
Konstanter kan definieras med nyckelordet const eller genom att använda funktionen define(). Medan define() tillåter att en konstant definieras till ett godtyckligt uttryck, har nyckelordet const begränsningar som beskrivs i nästa stycke. När en konstant är definierad kan den aldrig ändras eller tas bort. När du använder nyckelordet const, accepteras endast skalära (bool, int, float och string) uttryck och konstanta arrayer som innehåller enbart skalära uttryck. Det är möjligt att definiera konstanter som en resurs, men det bör undvikas, eftersom det kan leda till oväntade resultat. Värdet på en konstant nås enkelt genom att ange dess namn. Till skillnad från variabler föregås inte en konstant av ett $. Det är också möjligt att använda funktionen constant() för att läsa en konstants värde om konstantens namn erhålls dynamiskt. Använd get_defined_constants() för att få en lista över alla definierade konstanter.
Notera: Konstanter och (globala) variabler finns i olika namnrymder. Detta innebär att till exempel true och $TRUE generellt är olika.
Om en odefinierad konstant används kastas ett fel. Före PHP 8.0.0 skulle odefinierade konstanter tolkas som en enkel ordsträng, d.v.s. (CONSTANT vs "CONSTANT"). Denna återfall är föråldrad från och med PHP 7.2.0, och ett fel av nivån E_WARNING utfärdas när det händer.
Före PHP 7.2.0 utfärdades ett fel av nivån E_NOTICE istället. Se även manualposten om varför $foo[bar] är felaktigt (om inte bar är en konstant). Detta gäller inte för (fullständigt) kvalificerade konstanter, vilka alltid kommer att resultera i ett fel om de är odefinierade.
Notera: För att kontrollera om en konstant är inställd, använd funktionen defined().
Här är skillnaderna mellan konstanter och variabler:
- Konstanter har inte ett dollartecken ($) framför dem
- Konstanter kan definieras och nås var som helst oberoende av variabelns omfångsregler
- Konstanter får inte omdefinieras eller tas bort när de har ställts in; och
- Konstanter får endast utvärderas till skalära värden eller arrayer
Exempel #1 Definiera konstanter
<?php
define("CONSTANT", "Hej världen.");
echo CONSTANT; // skriver ut "Hej världen."
echo Constant; // Ger ett fel: Odefinierad konstant "Constant"
// Före PHP 8.0.0, skriver ut "Constant" och ger en varning.
?>
Exempel #2 Definiera konstanter med nyckelordet const
<?php
// Enkelt skalärt värde
const CONSTANT = 'Hej Världen';
echo CONSTANT;
// Skalärt uttryck
const ANOTHER_CONST = CONSTANT.'; Hejdå Världen';
echo ANOTHER_CONST;
const ANIMALS = array('hund', 'katt', 'fågel');
echo ANIMALS[1]; // skriver ut "katt"
// Konstanta arrayer
define('ANIMALS', array(
'hund',
'katt',
'fågel'
));
echo ANIMALS[1]; // skriver ut "katt"
?>
Notera:
I motsats till att definiera konstanter med define(), måste konstanter som definieras med nyckelordet const deklareras på den högsta nivån eftersom de definieras vid kompileringstid. Detta innebär att de inte kan deklareras inom funktioner, loopar, if-satser eller try/catch-block.
Se även
Klasskonstanter
PHP
Språkreferens