首页 > 解决方案 > 是否可以在特征中输入提示 $this?

问题描述

我有一个特点,想输入提示 $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
  }
}

这将允许我通知编译器该特征的用户实现了我的接口。

请注意,特征不能在 PHP 中实现接口(请参阅为什么 PHP 特征不能实现接口?)。

感谢您的任何帮助 ;-)

标签: phptype-hintingphpdoc

解决方案


没有警告,因为您欺骗了 IDE 参数已正确传递。实际上,运行时它总是抛出错误。

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


推荐阅读