В php указать нельзя, но внутри форыча проверить можно. Например: abort_unless($task instanceof ShedulerTask, 500, 'Need to implement ShedulerTask')
слух, doesntHave / has - работает же с m2m?
Ну решил пока что сделать через проверку instanceof. Хотел как-то по красивее))
Должны работать. Лет 5, если не больше, не сталкивался с таким релейшеном)
Пока сам пых не умеет валидировать массив, будем мучаться
Всё еще жду нативную поддержку типизированных массив а-ля Post[]
а так пробовал? array<class-string<SchedulerTask>>
ага, к сожалению у class-string нет дженерика
Ну подсказачки есть, и то через плагин и вроде на этом всё. Я вон юзер контроллер ему запихнул, он мне ничего не сказал. Толку немного в общем.
поставь пхпстан если хочеш уже так проверять типизацию
Просто шторм не всегда такое подсветит, если ты про контроллер
но случай простенький, я бы не заморачивался уж так, думаю разраб поймёт что ожидается масив конкретных классов, а не контроллера например.
Вообще да, согласен. Изначально хотел просто, что если туда какой-нибудь левый класс засунешь, то он подсвечивать начал. Но думаю в целом на данный момент этот вариант приемлемый. Косвенных подсказок достаточно что тут нужен массив конкретных классов)
Так для IDE подсказка что внутри. Можно проще: array<SchedulerTask> либо SchedulerTask[]. У него вопрос в том, как в самом коде убедиться что не "левый" туда подсунули.
нет дженерики в пыху не завезли только докблоки и статанализ или ручная проверка в коде
Не, я же туда не инстансы передаю, а строки и потом делаю app()->make($classString); Изначально была мысль передавать туда [new Task1(), new Task2()], тогда да SchedulerTask[] бы сработал и идешка бы подсвечивала в случае чего, но потом понял, что мне нужен DI. Поэтому через app()->make() их создаю.
Обсуждают сегодня