phpmentors/domain-commons

Commons for domain models

v1.1.3 2017-06-01 00:05 UTC

This package is auto-updated.

Last update: 2024-03-29 03:13:02 UTC


README

Commons for domain models

Build Status SensioLabsInsight Total Downloads Latest Stable Version Latest Unstable Version

Installation

Domain Commons can be installed using Composer.

$ composer require phpmentors/domain-commons

Features

DateTime basics

Date and Time

  • Date
  • DateTime
  • MonthDay
  • Year
  • YearMonth
  • HourMin
  • AgeRange

Period

  • Duration
  • Period
  • Term

Traversable

  • DailyTrait / DailyIteratableInterface
  • MonthlyTrait / MonthlyIteratableInterface

You can define a domain specific period as follows:

namespace MyDomain;

use PHPMentors\DomainCommons\DateTime\Date;
use PHPMentors\DomainCommons\DateTime\Period\DailyIteratableInterface;
use PHPMentors\DomainCommons\DateTime\Period\DailyTrait;

class DailyPeriod extends Period implements DailyIteratableInterface
{
    use DailyTrait;

    public function __construct(Date $start, Date $end)
    {
        parent::__construct($start, $end);
        $this->it = $this->iterate(); // this line enables iterator
    }
}

You can iterate this period by date using standard foreach statement as follows:

use PHPMentors\DomainCommons\DateTime\Date;
use MyDomain\DailyPeriod;

$period = new DailyPeriod(new Date('2015-04-12'), new Date('2015-06-30'));

$count = 0;
foreach ($period as $one) {
    echo $one->format('m/d') . PHP_EOL;
}

Utility

  • Clock

Matrix (Typed and Addressed)

  • TypedMatrix
  • AddressedMatrix

Operation

  • ZeroableInterface

String Utility

  • UniqueName

Support

If you find a bug or have a question, or want to request a feature, create an issue or pull request for it on Issues.

Copyright

Copyright (c) 2015 GOTO Hidenori, 2015 KUBO Atsuhiro, All rights reserved.

License

The BSD 2-Clause License