What's Changed
PDOをプロパティに持つクラスは通常シリアライズができませんが、以下のようにPDOではなくPDOのプロバイダーを注入することによりシリアライズが可能になります。
Classes that have PDO as a property cannot normally be serialized, but they can be serialized by injecting a lazy object as follows.
class LazyPdo
{
private PDO $pdo;
public function __construct(
/** ProviderInterface<PDO> */
#[Set(PDO::class)] private ProviderInterface $pdoProvider
) {
$this->pdoProvider = $pdoProvider;
$this->initialize($pdoProvider);
}
public function initialize(ProviderInterface $pdoProvider)
{
$this->pdo = $this->pdoProvider->get();
}
public function __serialize(): array
{
return [
'pdoProvider' => $this->pdoProvider
];
}
public function __unserialize(array $data): void
{
$this->pdoProvider = $data['pdoProvider'];
$this->initialize($data['pdoProvider']);
}
}
Full Changelog: 2.17.1...2.17.2