扩展PHP的类型提示

时间:2013-01-10 10:16:02

标签: php netbeans type-hinting

是否可以在Netbeans中使用另一个documentor标签扩展类型提示?

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

示例:

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

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

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

这将使文件内容的行为与在MyObject作用域中的行为相同,而$this会暗示私有方法。

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

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

2 个答案:

答案 0 :(得分:2)

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

这只是因为你的模板无法访问/调用类的私有属性/方法以及你有一个对象(类的实例)你应该无法访问/调用它的类的静态属性/方法

如果您愿意在类中键入提示,则同样适用 - 现在类型提示列出了$this->||是光标)的所有公共,受保护和私有方法,而静态属性和方法仍未列出。另一方面,如果你是MyClass::|上的类型提示现在只列出静态属性/方法,那么当在 MyClass 类中时,所有公共,受保护和公共类都是当从外部访问时,列出的是列表中缺少的(非常正确)。

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

答案 1 :(得分:0)

我知道我们不应该提出任何工具,但有时我无法抗拒人们试图用错误的方法解决问题的感觉。我认为NetBeans正在慢慢地遵循Eclipse的步骤,Eclipse几乎完全放弃了对PHP的支持。然而,有其他IDE严格设计用于PHP语言,它解决了一些开箱即用的问题。

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

关于问题本身我将给出一个功能请求的示例链接,该请求显示有问题的问题是如何添加的:Allow protected member access on @var $this (i.e. in views)。还有更多related features,您可能会感兴趣。

总而言之,我的意见是:如果要拧紧螺丝,请使用螺丝刀,而不是锤子。