我正在尝试在phpspec中测试一个调用Laravel Validator::make
函数(http://laravel.com/docs/4.2/validation)的函数
但是,我正在尝试从已经采用Validator
类名的命名空间调用相同的函数。如何调用文档中描述的函数?
失败的解决方案:
尝试 1
return IlluminateValidationValidator::make($values,$rules);
给我
Call to undefined method IlluminateValidationValidator::make()
尝试 2
return IlluminateValidationFactory::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 IsoformValidator because the name is already in use
尝试 4
use Validator as DefaultValidator;
给我
Class 'DefaultValidator' not found
return IlluminateSupportFacadesValidator::make($values,$rules);
这将导致phpspec中的错误,但这无法避免。虽然Validator::make
看起来像一个静态函数 - 在幕后它实际上是在返回一个实例。因为我使用的是phpspec,所以没有创建该实例,因此出现了错误。
尝试使用单个正斜杠来引用全局命名空间:
return Validator::make($values,$rules);
我解决了这个问题。只需从vendorlaravelframeworksrcIlluminateValidationValidator.php
中删除use Validator
,然后将use Validator
代码添加到控制器即可。然后,您就可以采取行动了。
$validator = Validator::make($request->all(), $rules);