php - Laravel - 类型错误 : Too few arguments?

标签 php laravel laravel-5 laravel-5.4

我得到一个错误:

Type error: Too few arguments

我认为如果参数没有完全通过,Laravel 会施展魔法吗?

例如:

在我的 Controller 中:

public function create(CreateRequest $request)
{
    return $this->todoService->createList($request);
}

todoService类中:

use App\Plan

class todoService {   

    public function createList($request, Plan $plan)
    {
      //
    }
}

如您所见,我没有传递 Plan 类对象。我必须绑定(bind)什么的吗?

最佳答案

如果您自己调用 createList(),那么您需要自己传递两个参数。您可以使用 Plan 绑定(bind)一些东西,但如果您调用的不是 Laravel 的东西,那么您将负责传递该函数参数。

这种类型提示仅在 Laravel 调用该函数时有效。所以你需要通过 Laravel 来调用这些函数。

如果你想自动注入(inject)一个类的构造函数,你可以简单地这样做:

$service = $this->app->make('App\Plan\todoservice');

$service = App::make('App\Plan\todoservice');

$service = resolve('App\Plan\todoservice');

但这只适用于构造函数。请注意,您还可以提供参数作为 make()resolve() 函数的下一个参数。

其实不同的方法也可以这样调用。

你可以简单地做:

    $service = App::make('App\Plan\todoservice');
    $container->call([$service, 'createList'], ['request' => $request] );

这里 $containerIlluminate\Contracts\Container\Container 的对象。

关于php - Laravel - 类型错误 : Too few arguments?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43958616/

相关文章:

php - 如何修改此查询,以便开始/结束日期按天而不是精确时间?

php - 如何在 PHP 中初始化一个空的关联数组?

php - Laravel:在迁移过程中重命名表字段而不删除数据

mysql - 使用 2 个表的 Laravel 5.1 查询

php - 在更新服务器端代码之前需要多次刷新?

php - 在 Zend Form 方面需要帮助

php - 如何从 Laravel 中的数据库表中检索记录并防止那些过期的记录

Laravel-创建模型启动不触发

php - 如何在 Laravel 中解码 JSON 对象

php - Laravel:检测是否加载了嵌套关系