Как я могу вызвать Validator из пространства имен с уже существующим классом Validator

Я пытаюсь проверить функцию в phpspec, которая вызывает функцию Validator::make Laravel ( http://laravel.com/docs/4.2/validation )

Тем не менее, я пытаюсь вызвать ту же функцию из пространства имен, в котором уже используется имя класса Validator . Как я могу назвать эту функцию, описанную в документах?

Неудачные решения:

Попытка 1

 return \Illuminate\Validation\Validator::make($values,$rules); 

дает мне

 Call to undefined method Illuminate\Validation\Validator::make() 

Попытка 2

 return \Illuminate\Validation\Factory::make($values,$rules); 

дает мне

 Using $this when not in object context in /vendor/laravel/framework/src/Illuminate/Validation/Factory.php on line 92. Factory 

Попытка 3

 use \Validator; 

дает мне

 Cannot declare class Isoform\Validator because the name is already in use 

Попытка 4

 use \Validator as DefaultValidator; 

дает мне

 Class 'DefaultValidator' not found 

 return \Illuminate\Support\Facades\Validator::make($values,$rules); 

Это вызовет ошибки в phpspec, но этого избежать нельзя. Хотя Validator::make выглядит как статическая функция – за кулисами он действительно возвращает экземпляр. Поскольку я использовал phpspec, этот экземпляр не был создан, следовательно, ошибка.

Попробуйте использовать только одну косую черту для обращения к глобальному пространству имен:

 return \Validator::make($values,$rules); 

Я решил это. Просто удалите use Validator от vendor\laravel\framework\src\Illuminate\Validation\Validator.php а затем добавьте код use Validator к вашему контроллеру. Тогда вы готовы к действию.

 $validator = Validator::make($request->all(), $rules);