12

是否可以使用 Netbeans 中的另一个文档标记扩展类型提示?

我正在寻找一种使用标签扩展类型提示的方法,该@scope标签允许包含的文件访问对象范围。

例子:

file: template.php
<?php /* @var $this MyObject */

这将只允许对公共变量和方法进行类型提示。我希望做的是使用@scope标签扩展类型提示,使其能够访问 MyObject 范围:

file: template.php
<?php /* @scope MyObject */

这将使文件内容的行为就像在 MyObject 范围内一样,并$this暗示私有方法。

现在,我没有为 Netbeans 平台开发的经验,但我有 Java 经验。如果我想做到这一点,我会从哪里开始?

希望这不是一个太弱的问题。

4

2 回答 2

2

在过去(NetBeans 的旧版本)中,类型提示显示了一个类(正在使用的对象)的所有方法,即所有公共、受保护、私有甚至静态方法。现在,在 NetBeans 的新版本中,此错误已得到修复,并且当对对象进行类型提示时,仅对可访问的方法/属性进行类型提示。

这仅仅是因为您的模板无法访问/调用类的私有属性/方法以及如果您有一个对象(类的实例)您不应该能够访问/调用它的类的静态属性/方法。

如果您愿意在类内部进行类型提示,这同样适用 - 现在类型提示列出了$this->|(|是光标) 的所有公共、受保护和私有方法,而静态属性和方法仍未列出。另一方面,如果您现在是类型提示,则MyClass::|仅列出静态属性/方法,并且再次在MyClass类中列出所有公共、受保护和公共的,而从私有外部访问时(非常正确)在列表中丢失。

因此,您请求的功能是错误的,并且否定了正确的封装原则。

于 2013-12-24T11:07:43.350 回答
0

我知道我们不应该建议任何工具,但有时我无法抗拒人们试图用错误的工具解决问题的感觉。在我看来,NetBeans 正在慢慢追随 Eclipse 的步伐,随着时间的推移,它几乎完全放弃了对 PHP 的支持。然而,还有其他 IDE 是专门为 PHP 语言设计的,可以解决一些开箱即用的问题。

就我个人而言,我想要一个从一开始就为我提供大部分功能的工具。我对编写插件不感兴趣,这需要我的时间,并且随着时间的推移可能会被弃用。所以我选择了一个商业 IDE,它给了我比我需要的更多的东西,顺便说一句 - 它完美地满足了您在问题中包含的需求。如果您要编写 PHP 代码,那么我强烈建议您考虑购买专业工具。

关于问题本身,我将提供一个指向功能请求的示例链接,它显示了问题是如何解决的:Allow protected member access on @var $this (ie in views)。还有更多相关的功能,您可能会觉得有趣。

所以总结一下我的观点是:如果你要拧紧螺丝,那就用螺丝刀,而不是锤子。

于 2013-12-28T11:35:42.793 回答