【问题标题】:Add to custom methods to method signature autocomplete添加到自定义方法以方法签名自动完成
【发布时间】:2021-05-24 23:18:44
【问题描述】:

在课堂上可以自动完成某些方法,例如构造函数或一些继承的函数。如果应用了特定特征,我想在自动完成中添加一些自定义方法,例如 public function foo():void。首先,我想到了实时模板,但不能将它们限制为仅在存在特定特征时才应用。

你知道我是如何做到这一点的吗?也许通过生成一些文档块?

【问题讨论】:

  • PHPDoc @method 注释?
  • 当我在类中声明新方法时,这不允许自动完成。
  • 抱歉,不确定您的意思。请尝试使用代码示例(文本)+ 屏幕截图来说明您的问题,说明它是如何为您工作的。不能谈论在 Trait 中使用 @method,但在类上声明此类方法可以正常工作(相当多的框架/库使用它来帮助 IDE 使用框架的内部魔法)。
  • @LazyOne 请看一下图片here。如果类中存在 AsAction 特征而不编写插件,我想将自定义方法签名注入到新方法的自动完成中。我怎样才能做到这一点?
  • 感谢主题名称。像往常一样:在屏幕截图上看起来很棒..但很难在实际编辑器中使用(不方便:与我在自定义灯光主题中的颜色相比,颜色不同且部分受限,因此很难阅读代码,突出显示错误和警告不同的更难发现等;在屏幕截图上看起来比在编辑器中更好 - 不知何故颜色不是那么平滑(可能是字体系列和大小+渲染)。需要尝试一整天......

标签: php ide phpstorm jetbrains-ide


【解决方案1】:

您可以在 PHPDoc 注释中使用 @method tag 来为 trait 声明此类“虚拟”方法。现代 PhpStorm 版本可以在声明新方法时调用代码完成时提供这样的签名。

<?php
declare(strict_types=1);

/**
 * @method void traitPublic()
 */
trait T
{
    private function traitPrivate(): void
    {
    }
}

class C
{
    use T;
}

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2020-01-08
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多