Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netbeans和PHPStorm中的变量类型暗示_Php_Netbeans_Phpstorm_Phpdoc_Type Hinting - Fatal编程技术网

Netbeans和PHPStorm中的变量类型暗示

Netbeans和PHPStorm中的变量类型暗示,php,netbeans,phpstorm,phpdoc,type-hinting,Php,Netbeans,Phpstorm,Phpdoc,Type Hinting,我在一家公司工作,那里的员工都使用PHPStorm和Netbeans 8。在我们最近开始向代码中添加更多类型提示之前,这一直对我们很有效 在PHPStorm中,在源代码中使用类型提示的正确方法如下 /** @var MyAwesomeClass $theObject */ $theObject = $orm->getMyAwesomeObject(); /** @var $theObject \Full\Freeking\Namespace\With\Leading\Backslash\

我在一家公司工作,那里的员工都使用PHPStorm和Netbeans 8。在我们最近开始向代码中添加更多类型提示之前,这一直对我们很有效

在PHPStorm中,在源代码中使用类型提示的正确方法如下

/** @var MyAwesomeClass $theObject */
$theObject = $orm->getMyAwesomeObject();
/** @var $theObject \Full\Freeking\Namespace\With\Leading\Backslash\MyAwesomeClass */
这是有意义的,因为记录函数的正确方法是

/**
 * @param MyAwesomeClass $awesomeObjectArgument
 * @param boolean $booleanArgumentsAreSilly
 */
但是netbeans是这样工作的

/** @var MyAwesomeClass $theObject */
$theObject = $orm->getMyAwesomeObject();
/** @var $theObject \Full\Freeking\Namespace\With\Leading\Backslash\MyAwesomeClass */
这是一个问题,因为参数的顺序(到@var表示法)是颠倒的,并且Netbeans使用了PHPStorm不支持的前导斜杠

有人知道如何配置这些IDE中的任何一个以使用相同的标准,因为目前只有一半的代码具有工作自动完成功能。在我看来,Netbeans中的实现似乎不必要,并且与PHPDocs标准(基于@param表示法)冲突

更新:我错了,PHPStorm实际上与Netbeans符号兼容,但不是相反。这意味着我的问题还没有完全解决。我仍然需要找到一种方法来配置这两个IDE,以生成在这两个IDE中都能工作的文档

这是一个问题,因为参数的顺序(到@var表示法)是颠倒的,并且Netbeans使用PHPStorm不支持的前导斜杠

这不是真的。

1.PhpStorm支持两种订单(
@var[type][variable]
以及
@var[variable][type]

2.PhpStorm既支持PHPDoc注释(
/**@var…
),也支持普通块注释(
/*@var…

3.PhpStorm支持FQN——这很好:
/**@var$theObject\Full\Namespace\MyAwesomeClass*/


尽管ashazg断言没有PHPDoc类型暗示标准,但at的官方文档确实说,类型暗示应该在变量名之前,文档中没有提到这个顺序只是一个建议,任何人都可以使用自己的顺序


此外,这种做法与大多数其他强类型语言一致,如Java(公共int-speed)或C(int-speed)。因此,Netbeans不支持PHPDoc文档中正确的typehint顺序这一事实造成了很大的麻烦。

你是对的,我错误地认为PHPStorm无法处理反向符号。PHPStorm同时支持这两种技术,可以解决PHPStorm用户的问题,但不能解决netbeans用户的问题。有没有办法更改PHPStorm的模板,使其自动完成与netbeans相同的操作?“PHPStorm支持这两种方法可以解决PHPStorm用户的问题,但不能解决netbeans用户的问题”——然后在任何地方都使用与netbeans兼容的表示法(如果需要这种兼容性)。或者编写一些自定义脚本,找到这些不兼容的条目并交换顺序以使其兼容。“有没有办法更改PHPStorm的模板,使其自动完成与netbeans相同的操作?”所有可用于自定义模板的内容都位于
设置|文件和代码模板
中。如果您的案例没有,那么它就不可用。您可以创建自定义Live模板,并使用它来制作此类PHPDoc注释。无论如何:PhpStorm遵循PHPDoc标准,而另一个IDE的工作方式不同并不是PhpStorm的问题(特别是因为PhpStorm支持“其他”方式)。我要指出的是,在使用
@var
表示“局部变量”的数据类型方面,实际上没有“PHPDoc标准”。。。IDE中的这种实践是“在野外”发展起来的,因此实现上存在差异。phpDocumentor团队正在通过PHP-FIG将该用例包括在其提议的PSR-5 PHP文档语法标准()中,尽管它指定了一个新的
@type
标记来替换
@var
@LazyOne@ashnazg,但RFC提议现在似乎已经基本稳定(2017年5月),支持变量php文档的未来将类似于属性和常量:
/**@var Type$var*/
。我不明白你在说什么,在Netbeans(7.*,8.*)中,当你自动记录一个变量(键入
/**
,然后在变量前一行按ENTER键)时,它会自动在下一行写入
*@var type$variable
。当然,它理解代码提示的符号……我的断言是“局部变量”。这些是您提供的文档链接中的类变量,这些变量始终可以按照标准进行文档化。OP问题完全是关于“局部变量”,IDE试图在标准之外解决这个问题。。。因此,不同的实现方式不同。然而,本地变量和类变量PHPDoc之间的不同标准(或缺乏这些标准)以及上述语言中已经建立的标准语法确实造成了很多痛苦。我希望PSR-5能解决这个问题。