dobryprogramator / doctrine-safe-types
用于codingmachine/safe包的Doctrine类型
v1.0.2
2022-03-29 16:30 UTC
Requires
- php: ^7.1|^8.0
- doctrine/orm: ^2.7
- thecodingmachine/safe: ^1.1|^2.0
Requires (Dev)
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^0.12.18
- symplify/easy-coding-standard: ^7.2
- thecodingmachine/phpstan-safe-rule: ^1.0
This package is auto-updated.
Last update: 2024-09-29 06:14:23 UTC
README
实现将thecodingmachine/safe的DateTime
和DateTimeImmutable
库集成到Doctrine中的库。
动机
在PHP >= 7.4中,当你使用Doctrine的类型和Safe属性类型时,你会陷入以下错误 Typed property App\Entity\User::$birthDate must be an instance of Safe\DateTimeImmutable, DateTimeImmutable used
的陷阱。
例如,此实体将生成上述错误
// src/Entity/User.php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Safe\DateTimeImmutable as SafeDateTimeImmutable; /** * @ORM\Entity */ class User { ... /** * @ORM\Column(type="date_immutable") */ private SafeDateTimeImmutable $birthday; ... public function setBirthday(SafeDateTimeImmutable $birthday): void { $this->birthday = $birthday; } public function getBirthday(): SafeDateTimeImmutable { return $this->birthday; } }
此库提供安全的Doctrine类型。注释将转换为 @ORM\Column(type="date_immutable")
到 @ORM\Column(type="safe_date_immutable")
安装
composer require dobryprogramator/doctrine-safe-types
将以下配置放入 config/packages/doctrine.yaml
doctrine: dbal: ... types: safe_date: DobryProgramator\DoctrineSafeTypes\Type\SafeDateType safe_date_immutable: DobryProgramator\DoctrineSafeTypes\Type\SafeDateImmutableType safe_datetime: DobryProgramator\DoctrineSafeTypes\Type\SafeDateTimeType safe_datetime_immutable: DobryProgramator\DoctrineSafeTypes\Type\SafeDateTimeImmutableType safe_datetimetz: DobryProgramator\DoctrineSafeTypes\Type\SafeDateTimeTzType safe_datetimetz_immutable: DobryProgramator\DoctrineSafeTypes\Type\SafeDateTimeTzImmutableType safe_time: DobryProgramator\DoctrineSafeTypes\Type\SafeTimeType safe_time_immutable: DobryProgramator\DoctrineSafeTypes\Type\SafeTimeImmutableType