Laravel - 类型错误:参数太少?

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类对象.我必须绑定什么?

Haf*_*fiz 5

如果您要自己调用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