amberovsky/currency-doctrine

允许将 amberovsky/currency 作为 Doctrine 字段类型使用。

v0.3 2020-07-20 08:19 UTC

This package is auto-updated.

Last update: 2024-09-20 17:33:12 UTC


README

amberovsky/currency-doctrine 包提供了将 amberovsky/currency 作为 Doctrine 字段类型使用的功能。

示例

配置

它需要在 CurrencyType::setCurrencyFactory 方法中注入 CurrencyFactory。请使用您当前的 DI 机制来完成此操作。

要配置 Doctrine 以使用 amberovsky/currency 作为字段类型,您需要在您的启动文件中设置以下内容

use Doctrine\DBAL\Types\Type;
use Amberovsky\Money\Currency\Doctrine\CurrencyType;
use Amberovsky\Money\Currency\CurrencyFactory;

$currencyFactory = ...; // Get CurrencyFactory instance somehow

if (!Type::hasType(CurrencyType::NAME)) {
    Type::addType(CurrencyType::NAME, CurrencyType::class);
    /** @var CurrencyType $currencyType */
    $currencyType = Type::getType(CurrencyType::NAME);
    $currencyType->setCurrencyFactory($currencyFactory);
}

Symfony

将以下内容添加到您的 Kernel.php

    /**
     * @inheritDoc
     */
    protected function initializeContainer() {
        parent::initializeContainer();

        if (!Type::hasType(CurrencyType::NAME)) {
            Type::addType(CurrencyType::NAME, CurrencyType::class);
            /** @var CurrencyType $currencyType */
            $currencyType = Type::getType(CurrencyType::NAME);
            $currencyType->setCurrencyFactory($this->container->get(CurrencyFactory::class));
        }
    }

使用方法

然后,在您的模型中,您可以通过将 @Column 类型设置为 Currency 来注解属性。Doctrine 将处理其余部分。

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="invoices")
 */
class Invoice
{
    /**
     * @ORM\Column(type="Currency")
     */
    private Currency $currency;

    public function getCurrency(): Currency {
        return $this->currency;
    }
}

如何贡献

请fork此存储库并创建一个PR。确保在提交您的PR之前运行测试

make phpstan
make psalm
make phpspec

许可证

版权(C)2020 Anton Zagorskii,BSD-3-Clause许可证,详情请见许可证文件