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

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

1

Решение

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

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

1

Другие решения

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

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

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

$validator = Validator::make($request->all(), $rules);
0
По вопросам рекламы [email protected]