有没有办法告诉PHPStorm隐藏一个方法/函数/变量等?

6
我正在寻找一种方法让PHPStorm在代码补全时隐藏某些方法。我尝试使用@access private来注释DocBlocks,但它并没有隐藏这些方法。
除了编写/生成具有有限接口的存根文件并在项目中引用它之外,是否有其他隐藏私有API的方法?
例如:
假设库中有以下内容:
<?php


interface IDoABunchOfStuff
{
    /**
     * My library users use this
     */
    public function doFoo();

    /**
     * My Library needs this but requires that my users don't see it.
     *
     * @access private
     * @visibility none
     * @package mylib
     * @internal
     */
    public function doBar();

}

class Foo extends Something implements IDoABunchOfStuff
{
    /**
     * does foo
     */
    public function doFoo()
    {
        // ...
    }

    /**
     * does bar. for internal use only
     *
     * @access private
     * @visibility none
     * @package mylib
     * @internal
     */
    public function _doBar()
    {
        // ...
    }
}

我的图书馆用户正在输入:

<?php

myAwesomeFunction(IDoABunchOfStuff $aFoo)
{
    if($->$oFoo->[CTRL+SPACE] // invoking code completion...

是否有可能(如果有的话,我该如何)使我的用户永远不会看到_doBar

我尝试过不同的注释方法,但似乎都没有期望的效果。

P.S. 我使用的是PHPStorm 4.0.3

附加:

在这种情况下,我正在实现ArrayAccess,并且不希望offsetGet、offsetSet、offsetExists和offsetUnset混杂在我的代码完成窗口中,但我在其他地方也遇到了类似的问题,因此需要提出一个更一般化的问题。


你能把“doBar”函数改为私有的吗? - Doug Molineux
2
@PeteHerbertPenito:不行。这些类必须跨命名空间通信,并且具有不同的基类。我甚至无法将方法设置为受保护的。 - Kris
1个回答

2

很抱歉,您不能在当前版本的PhpStorm中做这样的事情。

在问题跟踪器上有一个建议使用@access标签来实现此目的的票证,但目前没有计划将其实施到任何特定版本中:http://youtrack.jetbrains.com/issue/WI-5788

请随意投票/评论等,也许它会更快地得到实施。


很糟糕的是,我必须跳过很多障碍才能得到没有实际结果的答案,但这完全回答了我的问题。谢谢。 - Kris
2018年有任何更新吗?看起来这应该已经实现了,但我仍然找不到任何方法来做到这一点。 - dallin
@dallin 你可以尝试使用 using @internal 标签 -- https://youtrack.jetbrains.com/issue/WI-22284 (同时查看这篇博客文章以获取一些细节,不确定是否适用于你的情况:https://blog.jetbrains.com/phpstorm/2018/12/phpstorm-2018-3-1-is-released/) - LazyOne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接