聲明注解類

雖然沒有嚴(yán)格要求,推薦為每個注解創(chuàng)建一個實(shí)際的類。 在這個最簡單的例子中,通過 use 語法從全局命名空間引入 #[Attribute] 注解所需要全空的類。

示例 #1 簡單的 Attribute 類

<?php

namespace Example;

use 
Attribute;

#[Attribute]
class MyAttribute
{
}

要限制指定注解的聲明類型,可為 #[Attribute] 注解第一個參數(shù)傳入字節(jié)位掩碼設(shè)置。

示例 #2 目標(biāo)限定使用的注解

<?php

namespace Example;

use 
Attribute;

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

在另一個類型中聲明 MyAttribute 會在調(diào)用 ReflectionAttribute::newInstance() 時(shí)拋出異常。

可以指定以下目標(biāo):

  • Attribute::TARGET_CLASS
  • Attribute::TARGET_FUNCTION
  • Attribute::TARGET_METHOD
  • Attribute::TARGET_PROPERTY
  • Attribute::TARGET_CLASS_CONSTANT
  • Attribute::TARGET_PARAMETER
  • Attribute::TARGET_ALL

注解在每個聲明中默認(rèn)情況下只能使用一次。 如果需要重復(fù),可以在 #[Attribute] 聲明中設(shè)置字節(jié)位掩碼。

示例 #3 使用 IS_REPEATABLE 允許注解在聲明中出現(xiàn)多次

<?php

namespace Example;

use 
Attribute;

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