Deklarera attributklasser: Skillnad mellan sidversioner
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
Admin (diskussion | bidrag) |
||
Rad 43: | Rad 43: | ||
* [[Attributklassen#Attribute::TARGET CLASS|Attribute::TARGET_CLASS]] | * [[Attributklassen#Attribute::TARGET CLASS|Attribute::TARGET_CLASS]] | ||
* [[Attributklassen#Attribute::TARGET FUNCTION|Attribute::TARGET_FUNCTION]] | * [[Attributklassen#Attribute::TARGET FUNCTION|Attribute::TARGET_FUNCTION]] | ||
* Attribute::TARGET_METHOD | * [[Attributklassen#Attribute::TARGET METHOD|Attribute::TARGET_METHOD]] | ||
* Attribute::TARGET_PROPERTY | * Attribute::TARGET_PROPERTY | ||
* Attribute::TARGET_CLASS_CONSTANT | * Attribute::TARGET_CLASS_CONSTANT |
Versionen från 24 augusti 2024 kl. 11.40
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::TARGET_PROPERTY
- Attribute::TARGET_CLASS_CONSTANT
- Attribute::TARGET_PARAMETER
- Attribute::TARGET_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.