Öznitelik sözdizimi çeşitli parçalardan oluşur. İlk olarak, öznitelik bildirimi her zaman bir #[ ile başlar ve bir ] biter. İçeride, virgüllerle ayrılmış bir veya daha fazla öznitelik bulunur. Öznitelik adı, İsim alanlarının kullanımı: Temeller bölümünde açıklandığı gibi nitelenmemiş, nitelenmiş veya tam nitelenmiş olabilir. Özniteliğin değiştirgeleri isteğe bağlıdır, ancak normalde parantez () içine alınır. Özniteliklerin değiştirgeleri yalnızca değişmez değerler veya sabit ifadeleri olabilir. Hem konumsal hem de isimli değiştirge sözdizimi kullanılabilir.
Öznitelik adları ve değiştirgeleri bir sınıfa çözümlenir, eğer özniteliğin bir örneği yansıtma arayüzü aracılığıyla istenirse değiştirgeler kurucuya iletilir. Her öznitelik için böyle bir sınıf kullanılmalıdır.
Örnek 1 - Öznitelik Sözdizimi
<?php
// a.php
namespace MyExample;
use Attribute;
#[Attribute]
class MyAttribute
{
const VALUE = 'value';
private $value;
public function __construct($value = null)
{
$this->value = $value;
}
}
// b.php
namespace Another;
use MyExample\MyAttribute;
#[MyAttribute]
#[\MyExample\MyAttribute]
#[MyAttribute(1234)]
#[MyAttribute(value: 1234)]
#[MyAttribute(MyAttribute::VALUE)]
#[MyAttribute(array("key" => "value"))]
#[MyAttribute(100 + 200)]
class Thing
{
}
#[MyAttribute(1234), MyAttribute(5678)]
class AnotherThing
{
}