php - 扩展 PHP 的类型提示

标签 php netbeans type-hinting

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

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

示例:

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

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

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

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

现在,我没有 Netbeans 平台的开发经验,但我有 Java 经验。如果我想实现这一目标,我该从哪里开始?

希望这个问题不是太弱。

最佳答案

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

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

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

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

关于php - 扩展 PHP 的类型提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14255474/

相关文章:

macros - Clojure defmacro 丢失元数据

java - NetBeans 生成的 javadoc 中缺少字段说明

java - 嵌套基类出现莫名其妙的 Netbeans 可序列化警告

PHP 文件中的 JavaScript 不输出任何内容

python - 即使测试了所有案例,MyPy 也会给出错误 "Missing return statement"

php - 如何在 PHP 7+ 中捕获可恢复的错误?

php - 退出 Smarty 手动完成

php - 配置 "beta_settings"中存在无法识别或未经允许的 key

php - 在 PHP 中使用 MySQL 数据进行搜索和排序

PHP:类型检查返回值是一种弥补 PHP 泛型不足的好习惯吗?