martindilling/basicvalueobjects

0.2.2 2015-02-14 16:37 UTC

This package is auto-updated.

Last update: 2024-08-28 22:32:19 UTC


README

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads SensioLabsInsight

一组最基本值对象的小集合。这可以帮助使你的代码更具表达性,并节省一些手动验证。

安装

所有可用版本均可在 Packagist 上查看。

通过 Composer

$ composer require martindilling/basicvalueobjects

用法

使用这些值对象,你可以对方法参数进行类型提示,以确保参数将以正确的格式提供。

在此示例中,字段将包含值对象的实例。

use BasicValueObjects\String;
use BasicValueObjects\Integer;
use BasicValueObjects\Boolean;

class CrewMember
{
    /** @var \BasicValueObjects\String */
    private $firstname;

    /** @var \BasicValueObjects\String */
    private $lastname;

    /** @var \BasicValueObjects\Integer */
    private $age;

    /** @var \BasicValueObjects\Boolean */
    private $captain;

    function __construct(String $firstname, String $lastname, Integer $age, Boolean $captain)
    {
        $this->firstname = $firstname;
        $this->lastname  = $lastname;
        $this->age       = $age;
        $this->captain   = $captain;
    }
}

$person = new CrewMember(
    new String('Malcolm'),
    new String('Reynolds'),
    new Integer(49),
    Boolean::true()
);

如果你不想对象上的字段包含实例,但想进行类型提示,只需将值对象的原始值赋给字段即可

use BasicValueObjects\String;
use BasicValueObjects\Integer;
use BasicValueObjects\Boolean;

class CrewMember
{
    /** @var string */
    private $firstname;

    /** @var string */
    private $lastname;

    /** @var int */
    private $age;

    /** @var bool */
    private $captain;

    function __construct(String $firstname, String $lastname, Integer $age, Boolean $captain)
    {
        $this->firstname = $firstname->native();
        $this->lastname  = $lastname->native();
        $this->age       = $age->native();
        $this->captain   = $captain->native();
    }
}

$person = new CrewMember(
    new String('River'),
    new String('Tam'),
    new Integer('28'),
    Boolean::false()
);

如何使用值对象的演示

// String
$shiny = new String("Everything's shiny, Cap'n. Not to fret.");
$fool  = new String("Oh, she'll fool ya.");

$shiny->native();       // (string) Everything's shiny, Cap'n. Not to fret.
$fool->__toString();    // (string) Oh, she'll fool ya.
$shiny->equals($fool);  // (bool) false

// Integer
$integer1 = new Integer(42);
$integer2 = new Integer(37);

$integer1->native();           // (integer) 42
$integer2->__toString();       // (string) 37
$integer1->equals($integer2);  // (bool) false

// Boolean
$boolean1 = new Boolean(true);
$boolean2 = new Boolean(Boolean::TRUE);
$boolean3 = Boolean::false();

$boolean1->native();           // (bool) true
$boolean2->__toString();       // (string) true
$boolean1->equals($boolean2);  // (bool) true
$boolean1->equals($boolean3);  // (bool) false

测试

$ phpunit

贡献

请参阅 CONTRIBUTING 获取详细信息。

安全

如果你发现任何与安全相关的问题,请通过电子邮件 martindilling@gmail.com 而不是使用问题跟踪器。

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件