plusforta/value-objects-bundle

安装: 276

依赖项: 0

建议者: 0

安全性: 0

星标: 0

分支: 0

类型:symfony-bundle

1.0.1 2024-04-29 14:45 UTC

This package is auto-updated.

Last update: 2024-08-29 13:32:13 UTC


README

该库提供了各种值的对象。对于每个值对象,还有一个 Doctrine 类型,可以集成到 Symfony 项目中,使得值对象可以直接存储在数据库中。

已弃用

它之所以存在,仅仅是因为有人在到处使用它。

如果你想在项目中使用枚举,只需创建一个枚举即可。

在这里定义它没有任何意义。你几乎永远不会在另一个项目中使用它。

定义自定义数据库类型是没有意义的。这只是一个糟糕的想法,在我意识到发生了什么之前已经走得太远。我深感抱歉。

它过于复杂,使得代码更难阅读和理解。

如果你扩大了这个范围,我会非常失望。

验证

我不明白为什么有人会认为在这里对数据进行验证是个好主意,在这里数据永远无法被用户纠正。

如果你想验证数据,请在表单或控制器中验证,这样用户可以采取一些纠正措施。这里太晚了。

请随意删除任何让你烦恼的验证。更好的是,停止使用这些对象。

当前使用情况

项目使用的版本
reportsdev-master
export-servicedev-master
api-kfdedev-master
pdf-servicedev-master
email-servicedev-master

在撰写本文时,dev-master 与版本 1.0.0 相同

安装

composer require plusforta/value-objects-bundle:dev-master

使用

库中的所有值对象都实现了 \Plusforta\ValueObjects\StringValueInterface。每个对象实现了一个 fromString(string $value) 方法来创建值对象,以及一个 toString() 方法将值对象转换回字符串。

定义 doctrine 类型

要使用值对象作为实体的属性类型,必须将值对象定义为 doctrine 类型。

# config/packages/doctrine.yaml
doctrine:
    dbal:
        types:
            doctrine_type_email: Plusforta\Doctrine\Type\Common\Email\Email

现在值对象可以用作实体的属性类型。在 config/packages/doctrine.yaml 中定义的键必须用作数据库类型。

    /**
     * @ORM\Column(type="doctrine_type_email", length=255, nullable=true)
     */
    private ?Plusforta\ValueObejcts\Common\Email\Email $email = null;