texdc / range
范围对象库
v2.0.1
2018-02-27 04:25 UTC
Requires
- php: ~7.0
Requires (Dev)
- phpunit/phpunit: @stable
- satooshi/php-coveralls: @stable
- squizlabs/php_codesniffer: @stable
This package is not auto-updated.
Last update: 2024-09-14 16:29:24 UTC
README
Oh, give me a home where the buffalo roam
Where the deer and the antelope play
Where seldom is heard a discouraging word
And the skies are not cloudy all day
这个库的灵感来源于Martin Fowler的讨论。
安装
composer require texdc/range @stable
示例
范围
范围提供简单的验证和迭代。
use texdc\range\DateRange; $dateRange = new DateRange(new DateTime, new DateTime('+1 month')); assert($dateRange->includes(new DateTime('+3 days'))); echo $dateRange->getSpan()->days; foreach ($dateRange as $day) { echo $day->format('l, F jS, Y'); }
范围也可以相互比较。
use texdc\range\IntegerRange; $range1 = new IntegerRange(1, 5); $range2 = new IntegerRange(8, 3); $range3 = new IntegerRange(5, 8); assert($range1->overlaps($range2)); assert($range2->isContraryTo($range1)); assert($range3->abuts($range2)); assert($range1->begins(IntegerRange::merge($range1, $range3))); assert($range3->ends(IntegerRange::combine([$range1, $range3])));
查看测试以获取更多比较!
启用
启用功能利用范围来提供比简单布尔标志更健壮的替代方案。
use texdc\range\DateEnablement; class DatedBannerAd extends AbstractBannerAd { /** * @var DateEnablement */ private $enablement; // ... public function render() { if ($this->enablement->isEnabled()) { return parent::render(); } } }