Klasskonstanter
Klasskonstanter
Det är möjligt att definiera konstanter på en per-klass-basis som förblir desamma och oföränderliga. Standard-synligheten för klasskonstanter är public.
Observera:
Klasskonstanter kan omdefinieras av en underklass. Från och med PHP 8.1.0 kan klasskonstanter inte omdefinieras av en underklass om de är definierade som final.
Det är också möjligt för gränssnitt (interfaces) att ha konstanter. Se dokumentationen för gränssnitt för exempel.
Det är möjligt att referera till klassen med en variabel. Variabelns värde kan inte vara ett nyckelord (t.ex. self, parent och static).
Observera att klasskonstanter allokeras en gång per klass, och inte för varje klassinstans.
Exempel #1 Definiera och använda en konstant
<?php class MyClass { const CONSTANT = 'konstant värde'; function showConstant() { echo self::CONSTANT . "\n"; } } echo MyClass::CONSTANT . "\n"; $classname = "MyClass"; echo $classname::CONSTANT . "\n"; $class = new MyClass(); $class->showConstant(); echo $class::CONSTANT."\n"; ?>
Den speciella `::class` konstanten tillåter fullständigt kvalificerad klassnamnsupplösning vid kompilering, vilket är användbart för namnrymda klasser:
Exempel #2 Namnrymd ::class exempel
<?php namespace foo { class bar { } echo bar::class; // foo\bar } ?>
Exempel #3 Klasskonstant uttrycksexempel
<?php const ONE = 1; class foo { const TWO = ONE * 2; const THREE = ONE + self::TWO; const SENTENCE = 'Värdet av THREE är '.self::THREE; } ?>
Exempel #4 Synlighetsmodifierare för klasskonstanter, från och med PHP 7.1.0
<?php class Foo { public const BAR = 'bar'; private const BAZ = 'baz'; } echo Foo::BAR, PHP_EOL; echo Foo::BAZ, PHP_EOL; ?>
Utdata av ovanstående exempel i PHP 7.1:
bar Fatal error: Uncaught Error: Cannot access private const Foo::BAZ in …
Observera:
Från och med PHP 7.1.0 är synlighetsmodifierare tillåtna för klasskonstanter.
Sidslut
Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.oop5.properties.php
PHP
Språkreferens
Språkreferens#Klasser_och_Objekt