php - PhpStorm - 检查 NULL 值
问题描述
关于这个例子的问题:
<?php declare(strict_types=1);
class SomeTestClass
{
/** @var string|null */
private $name;
/** @var string */
private $sth;
public function getName(): ?string
{
return $this->name;
}
public function setSomething(string $value): void
{
$this->sth = $value;
}
public function something(): void
{
$this->setSomething($this->getName());
}
}
为什么PhpStorm 2018.3.5没有通知我有关something()
使用可空值作为不应为空的方法参数的错误代码?我之所以问这个问题,是因为当$name
属性为时null
,我的应用程序中会出现错误。
版本与
public function something(): void
{
/** @var string|null $name */
$name = $this->getName();
$this->setSomething($name);
}
也不起作用。
解决方案
PhpStorm 在分析代码时不是很严格。例如,当通过构造函数注入属性值时,它在自动完成方法和属性时不查看声明的属性类型,而是查看注入构造函数的类型。
对于非常严格的分析,试试PHPStan。与 PhpStorm 不同,您可以轻松地将其添加到您的 CI 构建中。请参阅您的示例产生的错误。
推荐阅读
- oracle - Popup LOV 或 Retutn P_Iten(如果 P_tem 在 Popup LOV 列表中)
- php - Nginx 全新的 codeigniter 安装在尝试访问控制器时显示 404 Not Found
- karate - 如何使用 TestNG 运行空手道测试运行程序文件?
- angular - 如何使用带电容器的 angular ionic 4 像 TIKTOK APP 一样全屏显示图像和视频
- c# - 表单最大化后如何修复控件位置
- linux - 如何从在 Linux 上运行的 .NET Core 应用程序对 Windows 域用户进行身份验证
- python - 如何成功编译 python 3.x
- sql - 在删除语句postgresql中使用partition by子句
- python - 如果满足条件,则获取列表列表的最大元素
- automated-tests - 仅在一次测试中禁用赛普拉斯中的网络安全