我正在尝试在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
答案 0 :(得分:1)
return \Illuminate\Support\Facades\Validator::make($values,$rules);
这会导致phpspec出错,但这是无法避免的。虽然Validator::make
看起来像一个静态函数 - 在幕后它实际上是返回一个实例。因为我使用的是phpspec,所以没有创建该实例,因此错误。
答案 1 :(得分:0)
只需使用一个正斜杠来引用全局命名空间:
return \Validator::make($values,$rules);
答案 2 :(得分:0)
我解决了那个问题。只需从use Validator
删除vendor\laravel\framework\src\Illuminate\Validation\Validator.php
,然后将use Validator
代码添加到控制器即可。然后你就可以采取行动了。
$validator = Validator::make($request->all(), $rules);