class Product
{
public int $id;
public string $name;
public ?string $date = NULL; //может быть заполнен, не обязательно
public function __construct(int $id, string $name)
{
$this->id = $id;
$this->name = $name;
}
public function getName(): string
{
return $this->name;
}
public function getDate(): string
{
return $this->date;
}
public function setDate(string $date): void
{
$this->date = $date;
}
}
class ProductCollection{
public function create(Product $product){
$cols = [
'name' => $product->getName(),
'date' => $product->getDate()
];
var_dump($cols);
//save to DataBase
}
}
$a = new Product(1, "Name1");
$b = new Product(2, "Name2");
$b->setDate('2023-02-28');
$m = new ProductCollection;
$m->create($a);
$m->create($b);
Возникает ошибка: Fatal error: Uncaught TypeError: Return value of Product::getDate() must be of the type string, null returned
Хотя я указал, что поле date строка, или NULL.
Где ошибка и как лучше вообще работать с NULL?
В базе данных mysql колонка date как раз имеет тип date, по дефолту NULL, то есть туда можно добавить только '2023-02-28' или NULL