gpt4 book ai didi

PhpStorm Trait 方法自动完成不起作用

转载 作者:可可西里 更新时间:2023-10-31 22:40:46 25 4
gpt4 key购买 nike

我在 PhpStorm 中遇到自动完成问题...

class Main
{
use Something;

/**
* @var SplObjectStorage
*/
private $container;

public function __construct()
{
$this->container = new SplObjectStorage();
}

public function addSth()
{
$this->add();
}
}


trait Something
{
public function add()
{
$this->container->attach(new stdClass());
}
}

$m = new Main();
$m->add();

var_dump($m);

一切正常,但 $this->container->attach(new stdClass()); 抛出该方法 attach 未找到...任何人都可以帮忙吗?我认为正确配置的 PHPDoc 应该有所帮助。

最佳答案

Trait 无法知道它的$container 是什么类型。在您的示例中,它是 SplObjectStorage,但如果不是呢?

您还需要将 $container 放入 Trait 中,并将其声明为 SplObjectStorage。然后它应该工作。通过这种方式,您还可以确保声明 Trait 的人实际上一个 $container 来让它工作。

trait Something {
/**
* @var SplObjectStorage
*/
private $container;

...

我想你可以强制这个问题:

public function add()
{
/**
* @var $cont SplObjectStorage
*/
$cont = $this->container;
$cont->attach(new stdClass());
}

关于PhpStorm Trait 方法自动完成不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38597809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com