Я пытаюсь проверить функцию в phpspec, которая вызывает Laravel’s Validator::make
функция (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);