Я пытаюсь проверить функцию в 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);