Symfony 4 实体 getter 和 setter return 值
Symfony 4 Entity getter and setter return values
当我从字段为空的数据库中获取值时,出现以下错误。
Return value of App\Entity\Settings::getDescription() must be of the type string, null returned
该值被保存为空值。
下面是该字段的获取方法。
public function getDescription(): string
{
return $this->description;
}
当我删除 "colon" 之后的代码时,我没有收到上述错误。有解决此问题的解决方法吗?
您指定的 return 类型 string
与值 null
不匹配。除了完全删除 return 类型外,还有很多方法可以解决这个问题:
使 return 类型可选
public function getDescription(): ?string
这将允许 null 或字符串,这会立即解决您的问题。缺点是,每当您调用 getDescription()
时,您可能不得不处理这个 null 导致丑陋的代码,如下所示:
$description = $entity->getDescription();
if (null === $description) {
// Do something with null
}
// Do something
有了描述,这可能不是问题。如果你有一些其他数据,如 DateTime
如果你想格式化日期时间或将其与另一个日期时间值进行比较,接收 null
可能会有问题。
这就是为什么第二个选项有意义:
确保值被填充:
public function getDescription(): string
{
return$this->description ?? '';
}
或:
private $description = '';
public function getDescription(): string
{
return$this->description;
}
此方法或其他方法可确保无论何时未设置数据库值,它将使用默认值,例如一个空字符串。这可能并不总是有意义。
还有其他方法可以解决这个问题,但它们是否有意义在很大程度上取决于您所处的环境。上面的 2 种方法是解决您的问题的常见方法:可空 return 类型或显式在您的数据库或代码中定义的默认值而不是 null。
当我从字段为空的数据库中获取值时,出现以下错误。
Return value of App\Entity\Settings::getDescription() must be of the type string, null returned
该值被保存为空值。 下面是该字段的获取方法。
public function getDescription(): string
{
return $this->description;
}
当我删除 "colon" 之后的代码时,我没有收到上述错误。有解决此问题的解决方法吗?
您指定的 return 类型 string
与值 null
不匹配。除了完全删除 return 类型外,还有很多方法可以解决这个问题:
使 return 类型可选
public function getDescription(): ?string
这将允许 null 或字符串,这会立即解决您的问题。缺点是,每当您调用 getDescription()
时,您可能不得不处理这个 null 导致丑陋的代码,如下所示:
$description = $entity->getDescription();
if (null === $description) {
// Do something with null
}
// Do something
有了描述,这可能不是问题。如果你有一些其他数据,如 DateTime
如果你想格式化日期时间或将其与另一个日期时间值进行比较,接收 null
可能会有问题。
这就是为什么第二个选项有意义:
确保值被填充:
public function getDescription(): string { return$this->description ?? ''; }
或:
private $description = ''; public function getDescription(): string { return$this->description; }
此方法或其他方法可确保无论何时未设置数据库值,它将使用默认值,例如一个空字符串。这可能并不总是有意义。
还有其他方法可以解决这个问题,但它们是否有意义在很大程度上取决于您所处的环境。上面的 2 种方法是解决您的问题的常见方法:可空 return 类型或显式在您的数据库或代码中定义的默认值而不是 null。