dobryprogramator / doctrine-safe-types

用于codingmachine/safe包的Doctrine类型

v1.0.2 2022-03-29 16:30 UTC

This package is auto-updated.

Last update: 2024-09-29 06:14:23 UTC


README

实现将thecodingmachine/safeDateTimeDateTimeImmutable库集成到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