php new self()报错
public function t2()
{
$receiver = new self();
}
框架thinkphp6
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
public function t2()
{
$receiver = new self();
}
框架thinkphp6
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
错误提示已经很明显了:
__construct()
缺少参数,看你贴的代码是没有传入$app
,我没有用过 TP6,不过像在这样的框架里,获取一个对象的方法是使用容器,使用容器时它会把依赖自动注入(即将$app
自动实例化),如果使用new
是不会注入依赖的。所以在使用容器时,可以这样:
$receiver = invoke('xxx');
使用
new
方式时,可以这样:具体可以参考 TP6 的文档:https://www.kancloud.cn/manual/thinkphp6_0/1037489
因为依赖关系,如上面所说,self 对应的类的构造方法(也可能是继承过来的),需要至少一个类型为 App 的参数,但是你没有给他,所以在这里你需要给他一个 App ,但是通常在框架中,要处理这些有依赖的构造方法可以根据实际来,如果你有一个现成的 App 实例,你可以直接 new 并传递给他,可以看到构造函数传递的
$app
, 最终赋值给了成员$this->app
,所以你可以用如下代码但是,如果你所在的位置没有 App 实例,你也可以用全局助手函数
app()
第一个参数传入类名称全名,即这样也是可以,这样容器会自动处理依赖。