Skillnader från objekt: Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med '= Sidslut = Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.enumerations.object-differences.php <BR>PHP <BR>Språkreferens <BR>Språkreferens#Uppräkningar Kategori:Php<br> <BR> <hr> Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/') |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
Rad 1: | Rad 1: | ||
=== Skillnader från objekt === | |||
Även om enums är byggda på klasser och objekt, stöder de inte all objekt-relaterad funktionalitet. I synnerhet är enum-cases förbjudna från att ha tillstånd. | |||
* Konstruktörer och destruktörer är förbjudna. | |||
* Arv stöds inte. Enums kan inte utvidga eller utvidgas. | |||
* Statiska eller objekt-egenskaper är inte tillåtna. | |||
* Kloning av ett enum-case stöds inte, eftersom cases måste vara singleton-instans. | |||
* Magiska metoder, förutom de som listas nedan, är inte tillåtna. | |||
* Enums måste alltid deklareras innan de används. | |||
Följande objektfunktionalitet är tillgänglig och fungerar precis som den gör på andra objekt: | |||
* Offentliga, privata och skyddade metoder. | |||
* Offentliga, privata och skyddade statiska metoder. | |||
* Offentliga, privata och skyddade konstanter. | |||
* Enums kan implementera valfritt antal gränssnitt. | |||
* Enums och cases kan ha attribut kopplade till sig. Målfiltrarna `TARGET_CLASS` inkluderar enums själva. Målfiltrarna `TARGET_CLASS_CONST` inkluderar enum-cases. | |||
* Magiska metoder `__call`, `__callStatic`, och `__invoke`. | |||
* Konstanterna `__CLASS__` och `__FUNCTION__` beter sig som vanligt. | |||
* `::class` magiska konstanten på en enum-typ utvärderas till typen inklusive eventuellt namnrymd, precis som ett objekt. `::class` magiska konstanten på en case-instans utvärderas också till enum-typen, eftersom det är en instans av den typen. | |||
Dessutom kan enum-cases inte instansieras direkt med `new`, eller med `ReflectionClass::newInstanceWithoutConstructor()` i reflektion. Båda resulterar i ett fel. | |||
<pre> | |||
<?php | |||
$clovers = new Suit(); | |||
// Fel: Kan inte instansiera enum Suit | |||
$horseshoes = (new ReflectionClass(Suit::class))->newInstanceWithoutConstructor(); | |||
// Fel: Kan inte instansiera enum Suit | |||
?> | |||
</pre> | |||
= Sidslut = | = Sidslut = | ||
Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.enumerations.object-differences.php | Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.enumerations.object-differences.php |
Nuvarande version från 20 augusti 2024 kl. 05.39
Skillnader från objekt
Även om enums är byggda på klasser och objekt, stöder de inte all objekt-relaterad funktionalitet. I synnerhet är enum-cases förbjudna från att ha tillstånd.
- Konstruktörer och destruktörer är förbjudna.
- Arv stöds inte. Enums kan inte utvidga eller utvidgas.
- Statiska eller objekt-egenskaper är inte tillåtna.
- Kloning av ett enum-case stöds inte, eftersom cases måste vara singleton-instans.
- Magiska metoder, förutom de som listas nedan, är inte tillåtna.
- Enums måste alltid deklareras innan de används.
Följande objektfunktionalitet är tillgänglig och fungerar precis som den gör på andra objekt:
- Offentliga, privata och skyddade metoder.
- Offentliga, privata och skyddade statiska metoder.
- Offentliga, privata och skyddade konstanter.
- Enums kan implementera valfritt antal gränssnitt.
- Enums och cases kan ha attribut kopplade till sig. Målfiltrarna `TARGET_CLASS` inkluderar enums själva. Målfiltrarna `TARGET_CLASS_CONST` inkluderar enum-cases.
- Magiska metoder `__call`, `__callStatic`, och `__invoke`.
- Konstanterna `__CLASS__` och `__FUNCTION__` beter sig som vanligt.
- `::class` magiska konstanten på en enum-typ utvärderas till typen inklusive eventuellt namnrymd, precis som ett objekt. `::class` magiska konstanten på en case-instans utvärderas också till enum-typen, eftersom det är en instans av den typen.
Dessutom kan enum-cases inte instansieras direkt med `new`, eller med `ReflectionClass::newInstanceWithoutConstructor()` i reflektion. Båda resulterar i ett fel.
<?php $clovers = new Suit(); // Fel: Kan inte instansiera enum Suit $horseshoes = (new ReflectionClass(Suit::class))->newInstanceWithoutConstructor(); // Fel: Kan inte instansiera enum Suit ?>
Sidslut
Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.enumerations.object-differences.php
PHP
Språkreferens
Språkreferens#Uppräkningar
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/