Чуть поподробнее про вот этот способ: Validator::extend('foo', 'FooValidator@validate'); Рассказываю про ларавель 6+. Создаём свой класс (в отдельном файле, конечно же), который ни от кого не наследуем. Его обязательно надо положить туда, где его подхватит автозагрузка классов. Это, например - app/, или любая созданная папка внутри app, например, app/validators/, или уже существующая папка, например, app/Http/Controllers/ если вам так нравится. Дальше пишем в методе boot вашего сервис провайдера (который app/Providers/AppServiceProvider.php): Validator::extend('foo', 'FooValidator@validate'); Здесь - foo - имя правила, которое вы потом будете использовать для вызова своего класса. FooValidator - имя вашего класса, а validate - имя метода внутри класса, который и будет вызываться. Внимание, нюанс, над которым я бился два дня, не понимая, какого чёрта мой класс не виден: путь к классу надо указывать полностью! То есть, если вы положили ваш класс в app/validators/, то надо написать так: Validator::extend('foo', 'App\validators\FooValidator@validate');