函数提示 - 参数的可能值
Function hint - possible values for parameters
是否可以向 PhpStorm 的用户显示可能的函数参数是什么,而不仅仅是参数的类型?
例如,我有一个函数可以告诉程序员需要两个字符串,如下图所示:
但是,我希望提示显示每个变量的可能值 - 本例中为 tag
和 tag_type
;例如,
- 标签的可能值为“完整、查看、编辑、添加或删除”。
- 变量 tag_type 的可能值是数据库中大约 10 个左右活动的列表。
这是我的代码。是否可以更改为在 PhpStorm 中向用户显示允许的变量值是什么?
/**
* @param string $tag
* @param string $tag_type
* @return int
*
* [tag] = full, view, edit, add, or delete
* [type] = all, activities, grades, orders, people, schools, users, team_classes,
* coaches, team_parents, or organization
*
* by default, if leave arguments blank, you are asking if the current user is a full admin,
*/
public function isAdmin(string $tag = '', string $tag_type = ''){
if ($this->isFullAdmin())
return true;
return $this->tagas()
->where('tag', '=', 'full')
->where('tag_type', '=', $tag_type)
->orWhere(function($query) use ($tag, $tag_type) {
$query->where('tag','=',$tag)
->where('tag_type','=', $tag_type);
})->count();
}
好的,我想到了这个,但它似乎不起作用。我用 phpversion() 检查了我的 php 版本,它是 8.0.2.
public function isAdmin(
#[ExpectedValues(['all', 'activities', 'grades', 'orders', 'people', 'schools', 'users',
'team_classes','coaches', 'team_parents', 'organization'])] string $tag_type = '',
#[ExpectedValues(['*', 'full', 'view', 'edit', 'add', 'delete'])] string $tag = '*'
){
然而它只是稍微改变了类型提示。
它显示了 [ExpectedValues] 但没有显示实际的预期值?
您可以使用 PhpStorm 高级元数据。特别是:方法接受的参数 功能 -- https://www.jetbrains.com/help/phpstorm/ide-advanced-metadata.html#expected-arguments.
创建一个单独的类似 PHP 的文件,命名为 .phpstorm.meta.php
并将其放在项目根目录中。 PhpStorm 将在适当的位置解析和使用此文件中的数据。适用于任何现代 PHP 版本;它被 Laravel IDE Helper 以及 Symfony 插件使用,仅举几例。
<?php
namespace PHPSTORM_META {
expectedArguments(\AUser::isAdmin(), 0, 'full', 'view', 'edit', 'add', 'delete');
}
对于 PHP 8 你可以使用自定义 #[ExpectedValues]
PHP 属性由 JetBrains :
- https://github.com/JetBrains/phpstorm-attributes#expectedvalues
- https://blog.jetbrains.com/phpstorm/2020/12/phpstorm-2020-3-release/#expectedvalues
这样所有值都与方法本身存储在一起,而不是单独的文件。
<?php
declare(strict_types=1);
use JetBrains\PhpStorm\ExpectedValues;
class AUser {
/**
* Bla-bla ...
*
* By default, if leave arguments blank, you are asking if the current user is a full admin.
*
* @param string $tag
* @param string $tag_type
* @return int
*
*/
public function isAdmin(
string $tag = '',
#[ExpectedValues(['all', 'activities', 'grades', 'orders', 'people', 'schools', 'users', 'team_classes', 'coaches', 'team_parents', 'organization'])]
string $tag_type = ''
)
{
if ($this->isFullAdmin()) {
return true;
}
return $this->tagas()
->where('tag', '=', 'full')
->where('tag_type', '=', $tag_type)
->orWhere(function($query) use ($tag, $tag_type) {
$query->where('tag','=',$tag)
->where('tag_type','=', $tag_type);
})->count();
}
}
$user = new AUser();
$user->isAdmin('full', '');
IDE 也可以提示您使用了意外的值:
注意:这是一个弱警告严重性,因此它不是超级可见的(您可以在检查设置中调整它):
是否可以向 PhpStorm 的用户显示可能的函数参数是什么,而不仅仅是参数的类型?
例如,我有一个函数可以告诉程序员需要两个字符串,如下图所示:
但是,我希望提示显示每个变量的可能值 - 本例中为 tag
和 tag_type
;例如,
- 标签的可能值为“完整、查看、编辑、添加或删除”。
- 变量 tag_type 的可能值是数据库中大约 10 个左右活动的列表。
这是我的代码。是否可以更改为在 PhpStorm 中向用户显示允许的变量值是什么?
/**
* @param string $tag
* @param string $tag_type
* @return int
*
* [tag] = full, view, edit, add, or delete
* [type] = all, activities, grades, orders, people, schools, users, team_classes,
* coaches, team_parents, or organization
*
* by default, if leave arguments blank, you are asking if the current user is a full admin,
*/
public function isAdmin(string $tag = '', string $tag_type = ''){
if ($this->isFullAdmin())
return true;
return $this->tagas()
->where('tag', '=', 'full')
->where('tag_type', '=', $tag_type)
->orWhere(function($query) use ($tag, $tag_type) {
$query->where('tag','=',$tag)
->where('tag_type','=', $tag_type);
})->count();
}
好的,我想到了这个,但它似乎不起作用。我用 phpversion() 检查了我的 php 版本,它是 8.0.2.
public function isAdmin(
#[ExpectedValues(['all', 'activities', 'grades', 'orders', 'people', 'schools', 'users',
'team_classes','coaches', 'team_parents', 'organization'])] string $tag_type = '',
#[ExpectedValues(['*', 'full', 'view', 'edit', 'add', 'delete'])] string $tag = '*'
){
然而它只是稍微改变了类型提示。
它显示了 [ExpectedValues] 但没有显示实际的预期值?
您可以使用 PhpStorm 高级元数据。特别是:方法接受的参数 功能 -- https://www.jetbrains.com/help/phpstorm/ide-advanced-metadata.html#expected-arguments.
创建一个单独的类似 PHP 的文件,命名为 .phpstorm.meta.php
并将其放在项目根目录中。 PhpStorm 将在适当的位置解析和使用此文件中的数据。适用于任何现代 PHP 版本;它被 Laravel IDE Helper 以及 Symfony 插件使用,仅举几例。
<?php
namespace PHPSTORM_META {
expectedArguments(\AUser::isAdmin(), 0, 'full', 'view', 'edit', 'add', 'delete');
}
对于 PHP 8 你可以使用自定义 #[ExpectedValues]
PHP 属性由 JetBrains :
- https://github.com/JetBrains/phpstorm-attributes#expectedvalues
- https://blog.jetbrains.com/phpstorm/2020/12/phpstorm-2020-3-release/#expectedvalues
这样所有值都与方法本身存储在一起,而不是单独的文件。
<?php
declare(strict_types=1);
use JetBrains\PhpStorm\ExpectedValues;
class AUser {
/**
* Bla-bla ...
*
* By default, if leave arguments blank, you are asking if the current user is a full admin.
*
* @param string $tag
* @param string $tag_type
* @return int
*
*/
public function isAdmin(
string $tag = '',
#[ExpectedValues(['all', 'activities', 'grades', 'orders', 'people', 'schools', 'users', 'team_classes', 'coaches', 'team_parents', 'organization'])]
string $tag_type = ''
)
{
if ($this->isFullAdmin()) {
return true;
}
return $this->tagas()
->where('tag', '=', 'full')
->where('tag_type', '=', $tag_type)
->orWhere(function($query) use ($tag, $tag_type) {
$query->where('tag','=',$tag)
->where('tag_type','=', $tag_type);
})->count();
}
}
$user = new AUser();
$user->isAdmin('full', '');
IDE 也可以提示您使用了意外的值:
注意:这是一个弱警告严重性,因此它不是超级可见的(您可以在检查设置中调整它):