ThinkPHP6 多应用模式调用其他控制器时需要填写$app参数,报错Required parameter '$app' missing

Cejauh 发布于 2023-03-06 712 次阅读


AI 摘要

在使用ThinkPHP6的多应用模式时,你是否也陷入了缺少$app参数的泥潭?本文将揭开你所忽视的问题,深入分析在调用其他控制器时必须传入App对象的原因。尽管官方文档让你感到困惑,实际操作中却蕴含着简单的解决方案。跟随我们的思路,帮助你快速解决这一误区,让你的开发流程更加顺畅。为何不一探究竟,让这些困扰变为知识的宝藏?

如图所示,在多应用情况下,我调用User() 控制器,提示需要填写$app参数,

因为我所有的控制器都是 extends BaseController 的,所以查看BaseController的源码,发现如下

/**
 * 构造方法
 * @access public
 * @param  App  $app  应用对象
 */
public function __construct(App $app)
{
    $this->app     = $app;
    $this->request = $this->app->request;

    // 控制器初始化
    $this->initialize();
}

调用时需要传入一个App对象。

在网上和文档里查了半天都没结果,自己猜出解决方案。

传入参数如下:

(new App())->initialize()

完整的也就是

$user = new User((new App())->initialize());

你学废了吗?

 

By the way,TP6的文档写的乱七八糟,我真特么是服了,遇到问题看文档屁用没有。