Вы указываете тип возврата string
, значение которого null
не совпадает.Помимо полного удаления типа возврата, есть много способов справиться с этим:
Сделать тип возвращаемого значения необязательным
public function getDescription(): ?string
Это будетallow null или строка, которая мгновенно решает вашу проблему.Недостатком является то, что всякий раз, когда вы звоните getDescription()
, вам, возможно, придется иметь дело с этим нулем, приводящим к уродливому коду, подобному этому:
$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, приведенные выше, являются довольно распространенными способами решения вашей проблемы: nullable returnвведите или явное значение по умолчанию, определенное в вашей базе данных или в вашем коде вместо нуля.