为什么用了依赖注入的函数可以直接访问但是调用它却要传参?
比如用了依赖注入的函数放在控制器里可以直接在curl访问
但是当成函数调用的时候却必须传参,这是为何?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
比如用了依赖注入的函数放在控制器里可以直接在curl访问
但是当成函数调用的时候却必须传参,这是为何?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
因为你直接调用函数,并没有经过容器。
容器还有一个 call 方法,传递参数类似于
call_user_func_array
,只是其还多了第三个参数,默认方法。其次,第一个参数可以是路由那样的
命名空间/类名@方法名
,也可以是[对象,方法名]
,的形式去传递。第二个参数中,对象值在容器中有注册挂载的,会自动处理,你也可以手动指定,通过数组键值对的方式,
比如
esCanShowQuery
的Builder
对象,你可以不传递第二个参数,就会自动创建 Builder对象,并且成功调用,你也可以自己指定。
['builder'=>$query]
,其中 数组的键名就是形参名字,值就是要给定的值。你没看到,不代表没传。依赖注入说白了就是容器类帮你实例化并传了值,不是没有传。