繁体   English   中英

PhpStorm - 类型提示差异

[英]PhpStorm - type hinting differences

有时我不得不欺骗 PhpStorm 向我展示类型提示功能。

我正在使用 Laravel 8 并使用Str::replaceFirst() function ,其中“搜索”是“主题”字符串,而“替换”是主题。 我发现如果我使用变量,类型提示不起作用,除非我在它前面加上一个空字符串。

见下图。 我重复Str::replaceFirst() function,第一次用 arguments 由一个空字符串和一个变量组成,然后第二次,只使用变量。 请注意,在第二个示例中,类型提示消失了。

有没有办法解决? 也就是说,我不想在 arguments 之前使用空字符串来显示类型提示。

在此处输入图像描述

我发现如果我使用一个变量,除非我在它前面加上一个空字符串,否则类型提示不起作用。

这是默认(和 IMO 最佳)行为:在使用原始值(字符串或数字)时显示此类提示,并在使用变量/字段时隐藏它们。

当您使用变量/字段时,它的名称应该告诉您那是什么。 如果它没有这样做,那么请考虑为它取一个更好(更合适)的名称。 您甚至可以改进保存 RegEx 匹配项的$matches用法(请参阅末尾的部分)。

Str::replaceFirst('one', 'two', 'three');

在这里很难看出那些'one''two''three'真正含义。 但在下面的代码中很清楚:

Str::replaceFirst($text, $replace, $subject);

无论如何:在 JetBrains IDE 中,此类提示称为“嵌入提示” ,对于 PHP,您可以强制 IDE 为所有参数显示此类提示:

  • Settings (Preferences on macOS)
  • Editor | Inlay Hints
  • PHP | Show parameter hints --> Show name for all arguments

在此处输入图片说明

PhpStorm 文档中有关镶嵌提示的更多信息: https ://www.jetbrains.com/help/phpstorm/viewing-reference-information.html#inlay-hints


除此之外

如果您使用的是 PHP 8 - 查看PHP 自己的命名参数

基本上,您在方法调用中自己编写相同的提示。 好处是你甚至可以交换参数的顺序,它仍然可以工作。

Str::replaceFirst(search: 'one', replace: 'two', subject: 'three');
// or even
Str::replaceFirst(subject: 'three', search: 'one', replace: 'two');

// vs the original (PHP 7.x and below)
Str::replaceFirst('one', 'two', 'three');

对于较旧的 PHP - 您可以使用以下IDE 功能来查看参数是什么:


RegEx 匹配的更好变量名称——查看RegEx Named Captures

原始代码(使用$matches[1]来引用找到的价格):

$text = 'Price: €24';
preg_match('/Price: (?:£|€)(\d+)/u', $text, $matches);
echo $matches[1];

改进的代码( $matches['price']不仅仅是$matches[1] ):

$text = 'Price: €24';
preg_match('/Price: (?<currency>£|€)(?<price>\d+)/u', $text, $matches);
echo $matches['price'];

您可以在这里阅读更多内容:https ://php.watch/articles/php-regex-readability#named-captures

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM