I'l*_*ack 6 php laravel laravel-5 laravel-5.4
我收到一个错误:
类型错误:参数太少
如果争论没有完全通过,我认为Laravel会做些什么?
例如:
在控制器中我有:
public function create(CreateRequest $request)
{
return $this->todoService->createList($request);
}
Run Code Online (Sandbox Code Playgroud)
在todoService课堂上:
use App\Plan
class todoService {
public function createList($request, Plan $plan)
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我没有传递Plan类对象.我必须绑定什么?
如果您要自己调用createList(),那么您将需要自己传递两个参数。您可以将某些东西与Plan绑定在一起,但是如果您要调用的不是Laravel,那么您将负责传递该函数参数。
仅当Laravel调用该函数时,此类型提示才有效。因此,您需要通过Laravel调用这些函数。
如果您试图自动注入类的构造函数,则只需执行以下操作:
$service = $this->app->make('App\Plan\todoservice');
Run Code Online (Sandbox Code Playgroud)
要么
$service = App::make('App\Plan\todoservice');
Run Code Online (Sandbox Code Playgroud)
要么
$service = resolve('App\Plan\todoservice');
Run Code Online (Sandbox Code Playgroud)
但这仅适用于构造函数。请注意,您还可以提供参数作为make()或resolve()函数的下一个参数。
实际上,也可以以这种方式调用不同的方法。
您可以简单地执行以下操作:
$service = App::make('App\Plan\todoservice');
$container->call([$service, 'createList'], ['request' => $request] );
Run Code Online (Sandbox Code Playgroud)
这$container是的对象Illuminate\Contracts\Container\Container。
| 归档时间: |
|
| 查看次数: |
42283 次 |
| 最近记录: |