## アトリビュートクラスを宣言する

アトリビュートごとに個別のクラスを定義することをお勧めします。 最も単純なケースでは、`#[Attribute]` 宣言を持つ空のクラスで十分です。 このアトリビュートは、`use` 文を使用してグローバル名前空間からインポートできます。

例1 単純なアトリビュートクラスの例

    <?php

    namespace Example;

    use Attribute;

    #[Attribute]
    class MyAttribute
    {
    }

アトリビュートを適用できる宣言の種類を制限するには、 `#[Attribute]` 宣言の最初の引数としてビットマスクを渡します。

例2 アトリビュートを使える場所を限定するために、ターゲットとなるクラスを作る

    <?php

    namespace Example;

    use Attribute;

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

MyAttribute を別の型で宣言すると、 ReflectionAttribute::newInstance() の呼び出し時に例外がスローされます。

ビットマスクには、以下が指定できます:

- `Attribute::TARGET_CLASS`
- `Attribute::TARGET_FUNCTION`
- `Attribute::TARGET_METHOD`
- `Attribute::TARGET_PROPERTY`
- `Attribute::TARGET_CLASS_CONSTANT`
- `Attribute::TARGET_PARAMETER`
- `Attribute::TARGET_ALL`

デフォルトでは、アトリビュートは宣言ごとに1回しか使用できません。 アトリビュートを繰り返し可能にするには、 `#[Attribute]` 宣言のビットマスクで `Attribute::IS_REPEATABLE` フラグを指定します。

例3 宣言時にアトリビュートを複数回使えるように、IS_REPEATABLE を使う

    <?php

    namespace Example;

    use Attribute;

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open