Deklarera attributklasser: Skillnad mellan sidversioner
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
Rad 1: | Rad 1: | ||
=== 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 ==== | |||
<pre> | |||
<?php | |||
namespace Example; | |||
use Attribute; | |||
#[Attribute] | |||
class MyAttribute | |||
{ | |||
} | |||
?> | |||
</pre> | |||
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 ==== | |||
<pre> | |||
<?php | |||
namespace Example; | |||
use Attribute; | |||
#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)] | |||
class MyAttribute | |||
{ | |||
} | |||
?> | |||
</pre> | |||
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 ==== | |||
<pre> | |||
<?php | |||
namespace Example; | |||
use Attribute; | |||
#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION | Attribute::IS_REPEATABLE)] | |||
class MyAttribute | |||
{ | |||
} | |||
?> | |||
</pre> | |||
Versionen från 24 augusti 2024 kl. 11.29
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.