Öznitelik Sınıflarının Bildirimi

Zorunlu olmamakla birlikte, her öznitelik için gerçek bir sınıfın oluşturulması önerilir. En basit durumda, bir use ifadesiyle küresel isim alanından içe aktarılabilen #[Attribute] özniteliğinin bildirimi için yalnızca boş bir sınıfa ihtiyaç vardır.

Örnek 1 - Özniteliklerin kullanılabileceği yerleri kısıtlamak için hedef belirtiminin kullanımı

<?php

namespace Example;

use 
Attribute;

#[Attribute]
class MyAttribute
{
}

Bir özniteliğin atanabileceği bildirim türünü kısıtlamak için, #[Attribute] bildirimine ilk değiştirge olarak bir bit maskesi aktarılabilir.

Örnek 2 - Basit Öznitelik sınıfı

<?php

namespace Example;

use 
Attribute;

#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)]
class MyAttribute
{
}

MyAttribute sınıfının başka bir türde bildirilmesi, ReflectionAttribute::newInstance() çağrısı sırasında bir istisna oluşmasına sebep olur.

Öntanımlı olarak, bir öznitelik her bildirimde yalnızca bir kere kullanılabilir. Özniteliğin bildirimlerde yinelenebilir olması isteniyorsa, #[Attribute] bildiriminde bit maskesinin bir parçası olarak belirtilmelidir.

Örnek 3 - Özniteliğin bir bildirimle defalarca kullanılabilmesi için IS_REPEATABLE kullanımı

<?php

namespace Example;

use 
Attribute;

#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION | Attribute::IS_REPEATABLE)]
class MyAttribute
{
}
add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top