Skillnader från objekt: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(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/')
 
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/