for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Adlogix\EventScheduler\ValueObject;
use DateTimeInterface;
use Webmozart\Assert\Assert;
/**
* @author Toni Van de Voorde <[email protected]>
*/
final class WeekDay
{
* @var int
private $number;
* @param int $number
private function __construct(int $number)
Assert::range($number, 1, 7);
$this->number = $number;
}
* @return int
public function number(): int
return $this->number;
* @param WeekDay $weekDay
* @return bool
public function equals(WeekDay $weekDay): bool
return $this->number === $weekDay->number();
* @return WeekDay
public static function monday(): self
return new self(1);
public static function tuesday(): self
return new self(2);
public static function wednesday(): self
return new self(3);
public static function thursday(): self
return new self(4);
public static function friday(): self
return new self(5);
public static function saturday(): self
return new self(6);
public static function sunday(): self
return new self(7);
* @param DateTimeInterface $dateTime
final public static function fromDateTime(DateTimeInterface $dateTime): self
return WeekDay::fromNumber((int)$dateTime->format('N'));
* Returns a WeekDay instance from a numeric value. The representation is according to ISO-8601.
*
final public static function fromNumber(int $number): self
switch ($number) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
return new self($number);
throw new \InvalidArgumentException(sprintf('Given number %d is an invalid WeekDay number', $number));