2

我正在尝试在 phpspec 中测试一个调用 Laravel 函数的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
4

4 回答 4

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

这将导致 phpspec 中的错误,但这是无法避免的。虽然Validator::make看起来像一个静态函数 - 在幕后它实际上是在返回一个实例。因为我使用的是 phpspec,所以没有创建该实例,因此出现错误。

于 2015-01-15T23:41:19.417 回答
0

尝试只使用一个正斜杠来引用全局命名空间:

return \Validator::make($values,$rules);
于 2015-01-15T22:17:50.493 回答
0

使用 Illuminate\Support\Facades\Validator;

于 2021-10-14T21:58:53.937 回答
-1

我解决了那个。只需从控制器中删除use Validator然后vendor\laravel\framework\src\Illuminate\Validation\Validator.php添加use Validator代码。然后你就可以采取行动了。

$validator = Validator::make($request->all(), $rules);
于 2017-03-19T12:53:51.253 回答