Deklarera attributklasser: Skillnad mellan sidversioner
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) |
||
Rad 44: | Rad 44: | ||
* [[Attributklassen#Attribute::TARGET FUNCTION|Attribute::TARGET_FUNCTION]] | * [[Attributklassen#Attribute::TARGET FUNCTION|Attribute::TARGET_FUNCTION]] | ||
* [[Attributklassen#Attribute::TARGET METHOD|Attribute::TARGET_METHOD]] | * [[Attributklassen#Attribute::TARGET METHOD|Attribute::TARGET_METHOD]] | ||
* Attribute::TARGET_PROPERTY | * [[Attributklassen#Attribute::TARGET_PROPERTY|Attribute::Attribute::TARGET_PROPERTY]] | ||
* Attribute::TARGET_CLASS_CONSTANT | * [[Attributklassen#Attribute::TARGET_CLASS_CONSTANT|Attribute::Attribute::TARGET_CLASS_CONSTANT]] | ||
* Attribute::TARGET_PARAMETER | * [Attributklassen#Attribute::Attribute::TARGET_PARAMETER|Attribute::Attribute::TARGET_PARAMETER]] | ||
* Attribute::TARGET_ALL | * [Attributklassen#Attribute::Attribute::TARGET_ALL|Attribute::Attribute::ALL]] | ||
Som standard kan ett attribut endast användas en gång per deklaration. Om attributet ska kunna användas flera gånger på en deklaration måste det specificeras som en del av bitmasken till `#[Attribute]`-deklarationen. | Som standard kan ett attribut endast användas en gång per deklaration. Om attributet ska kunna användas flera gånger på en deklaration måste det specificeras som en del av bitmasken till `#[Attribute]`-deklarationen. |
Nuvarande version från 24 augusti 2024 kl. 11.43
Deklarera attributklasser
Även om det inte är strikt nödvändigt rekommenderas det att skapa en faktisk klass för varje attribut. I det enklaste fallet behövs endast en tom klass med attributet `#[Attribute]` deklarerat, som kan importeras från det globala namnutrymmet med en `use`-sats.
Exempel #1 Enkel attributklass
<?php namespace Example; use Attribute; #[Attribute] class MyAttribute { } ?>
För att begränsa vilken typ av deklaration ett attribut kan tilldelas kan en bitmask skickas som det första argumentet till `#[Attribute]`-deklarationen.
Exempel #2 Använda målspecificering för att begränsa var attribut kan användas
<?php namespace Example; use Attribute; #[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)] class MyAttribute { } ?>
Att deklarera `MyAttribute` på en annan typ kommer nu att kasta ett undantag under anropet till `ReflectionAttribute::newInstance()`.
Följande mål kan specificeras:
- Attribute::TARGET_CLASS
- Attribute::TARGET_FUNCTION
- Attribute::TARGET_METHOD
- Attribute::Attribute::TARGET_PROPERTY
- Attribute::Attribute::TARGET_CLASS_CONSTANT
- [Attributklassen#Attribute::Attribute::TARGET_PARAMETER|Attribute::Attribute::TARGET_PARAMETER]]
- [Attributklassen#Attribute::Attribute::TARGET_ALL|Attribute::Attribute::ALL]]
Som standard kan ett attribut endast användas en gång per deklaration. Om attributet ska kunna användas flera gånger på en deklaration måste det specificeras som en del av bitmasken till `#[Attribute]`-deklarationen.
Exempel #3 Använda IS_REPEATABLE för att tillåta attribut på en deklaration flera gånger
<?php namespace Example; use Attribute; #[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION | Attribute::IS_REPEATABLE)] class MyAttribute { } ?>
Sidslut
Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.attributes.classes.php
PHP
Språkreferens
Språkreferens#Attribut
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/
Tack till Datorhjälp som har sponsrat Linux.se med webserver.