harp-orm/money

Sebastian Bergmann 的 Money 的辅助特质

0.2.2 2014-08-28 11:58 UTC

This package is auto-updated.

Last update: 2024-09-21 20:43:43 UTC


README

Build Status Scrutinizer Code Quality Code Coverage Latest Stable Version

Sebastian Bergmann 的 Money 的辅助特质

用法

这通过特质为您的模型添加 "value" 属性。这是通过 ValueTrait 和 CurrencyTrait 实现的。第一个添加了处理 Money 对象的方法,而 CurrencyTrait 负责跟踪使用哪种货币。

// Model Class
use Harp\Harp\AbstractModel;
use Harp\Money\ValueTrait;
use Harp\Money\CurrencyTrait;

class User extends AbstractModel
{
    use ValueTrait;
    use CurrencyTrait;

    public static function initialize($config)
    {
        // ...
        ValueTrait::initialize($config)
        CurrencyTrait::initialize($config)
    }
    // ...
}

数据库表

┌─────────────────────────┐
│ Table: User             │
├─────────────┬───────────┤
│ id          │ ingeter   │
│ name        │ string    │
│ currency*   │ string    │
│ value*      │ integer   │
└─────────────┴───────────┘
* Required fields

方法

ValueTrait 方法

CurrencyTrait 方法

可冻结

使用 FreezableTrait 可以让您轻松地在数据库中冻结值。您需要实现 performFreeze 和 performUnfreeze 方法。 数据库表:

┌─────────────────────────┐
│ Table: User             │
├─────────────┬───────────┤
│ id          │ ingeter   │
│ name        │ string    │
│ isFrozen*   │ integer   │
└─────────────┴───────────┘
* Required fields

FreezableTrait 方法

可冻结值

这结合了 ValueTrait 和 FreezableTrait,允许您在模型中 "冻结" 值。它需要一个 getSourceValue,它返回作为 Money 对象的动态值。调用 "freeze" 后,getSourceValue 的结果将存储在数据库中,并且随后的 "getValue" 调用将返回冻结的值。

此外,如果 getSourceValue 的价格使用不同的货币,请使用 Converter 类将其转换为目标货币。

FreezableTrait 方法

许可证

版权 (c) 2014, Clippings Ltd. 由 Ivan Kerin 开发

根据 BSD-3-Clause 许可证,阅读 LICENSE 文件。