能否在traits中键入hint $this?

问题描述 投票:0回答:1

我有一个trait,我想输入hint $this来通知编译器它的类型。

trait MyTrait {
  public function myAwesomeFunction() {
    return new OtherClass($this); // warning: Expected MyAwesomeInterface, got MyTrait
  }
}

class OtherClass {
  public function __construct(MyAwesomeInterface $foo) { ... }
}

所以我想知道是否有类似的东西,例如:

trait MyTrait {
  public function myAwesomeFunction() {
    /**
     *  @var $this MyAwesomeInterface
     */
    return new OtherClass($this); // no warnings
  }
}

这样我就可以告诉编译器这个trait的用户实现了我的接口。

请注意,在PHP中,一个trait不能实现一个接口(参见 为什么PHP Trait不能实现接口?).

谢谢你的帮助;-)

php type-hinting phpdoc
1个回答
0
投票

没有警告,因为你欺骗了IDE的param是正确传递的。事实上,当运行时,它总是抛出错误。

Trait是为PHP中的任何类注入相关函数的块。它的目的是不用于OOP。我认为它将有助于实用工具的支持功能。

© www.soinside.com 2019 - 2024. All rights reserved.