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

如图所示,在多应用情况下,我调用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的文档写的乱七八糟,我真特么是服了,遇到问题看文档屁用没有。

 

【干货】TP5第三方类库引用报Class not found 办法

这篇文章我实在懒得排版了,就这样发吧。。

1、TP5第三方类库全部放在Extend目录内,如果是放在Extend目录下,则不需要再类库里声明namespace。直接 new \YourClass() 即可

2、如果你的类库在Extend的子目录下,则需要命名空间,命名空间要与目录名保持一致。

假如我有一个 Network.php 类,我放在了 Extend/Net/里面,真实地址就是:

extend/Net/Netword.php , 则命名空间就要为 

[php]namespace Net;[/php]

3、类名必须和文件名保持一致!!首字母必须大写!!!!

接着第2条的例子来说,文件名叫Network,则类名也必须叫Network,如下所示

[php]class Network{}[/php]

遵循以上,就不会再出错了。我本人已经被这个问题烦死了。。。。所以写下来以后提醒自己。。。