<?php

namespace Acms\Services\Validator\Attribute;

use Attribute;

/**
 * バリデータのメソッドを、管理画面のバリデーション選択肢として露出させる属性。
 *
 * この属性を付与したメソッドは、メソッド名を key として
 * 管理画面（フォーム / フォーム2）の「オプション」プルダウンに表示される。
 * 属性が付いていないメソッドは選択肢に現れず、実行時バリデーションのみで利用される。
 */
#[Attribute(Attribute::TARGET_METHOD)]
final class AsValidationOption
{
    /**
     * 「値」欄（バリデーション引数）の要否は属性では指定しない。
     * OptionProvider がメソッドの第2引数以降の有無から自動判定する。
     *
     * @param string $label 選択肢の表示ラベル（出力時に gettext で翻訳される）
     * @param string $group 表示グループの日本語ラベル（例: 入力値の制限 / 形式チェック / その他）。
     *                      既知グループ以外を指定すると、選択肢一覧の末尾にそのグループ名で表示される。
     */
    public function __construct(
        public string $label,
        public string $group = 'その他',
    ) {
    }
}
