作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我得到一个错误:
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] );
这里 $container
是 Illuminate\Contracts\Container\Container
的对象。
关于php - Laravel - 类型错误 : Too few arguments?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43958616/
我是一名优秀的程序员,十分优秀!