Deklarera attributklasser: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
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.