Deklarera attributklasser: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
 
(3 mellanliggande sidversioner av samma användare visas inte)
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:
* [[Attributklassen#Attribute::TARGET CLASS|Attribute::TARGET_CLASS]]
* [[Attributklassen#Attribute::TARGET FUNCTION|Attribute::TARGET_FUNCTION]]
* [[Attributklassen#Attribute::TARGET METHOD|Attribute::TARGET_METHOD]]
* [[Attributklassen#Attribute::TARGET_PROPERTY|Attribute::Attribute::TARGET_PROPERTY]]
* [[Attributklassen#Attribute::TARGET_CLASS_CONSTANT|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 ====
<pre>
<?php
namespace Example;
use Attribute;
#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION | Attribute::IS_REPEATABLE)]
class MyAttribute
{
}
?>
</pre>





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:


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.