Это ещё ладно, когда улица обязательна для заполнения с жёстким выбором только из справочника, так ещё и сами справочники бывают кривые. Заказывал пиццу из приложения одной компании на улицу Малая Дмитровка. Однако, такая в справочнике не нашлась, а без улицы недоступна оплата онлайн (!), что мне не подходило. Я просто закрыл приложение, и компания потеряла маленькую, но прибыль. Впоследствии оказалось, что в справочнике была моя улица, но в виде «М. Дмитровка», поэтому поиск по слову «малая» ничего не давал.
Сомневаюсь, что аргументы в аннотации оправданы. Я добавил их, скорее, для демонстрации работы с аннотациями.
С другой стороны, возможен следующий вариант реализации инициализирующих методов:
/** @Init(priority=200) */
public function init1() {}
/** @Init(priority=300, args={true}) @Init(priority=100, args={false}) */
public function init2($bool) {}
хотя он маловероятен. Если только добавить какую-то логику обработки результатов вызовов этих методов, влияющих на порядок выполнения.
С другой стороны, возможен следующий вариант реализации инициализирующих методов:
хотя он маловероятен. Если только добавить какую-то логику обработки результатов вызовов этих методов, влияющих на порядок выполнения.
Если я правильно понял, @annotation_reader как раз возвращает кэширующий ридер аннотаций.