'Order amount', self::PAID => 'Order is paid', self::IN_PROGRESS => 'Order is being processed', self::AWAITING_PAYMENT => 'Order created, but not paid', self::REJECTED => 'Order is not available', ]; /** @var int */ private $value; private function __construct(int $value) { $this->value = $value; } public static function fromValue(int $value): self { if (!array_key_exists($value, self::DESCRIPTIONS)) { throw new \InvalidArgumentException('Неизвестный код MNT_RESULT_CODE.'); } return new self($value); } public static function withAmount(): self { return new self(self::WITH_AMOUNT); } public static function paid(): self { return new self(self::PAID); } public static function inProgress(): self { return new self(self::IN_PROGRESS); } public static function awaitingPayment(): self { return new self(self::AWAITING_PAYMENT); } public static function rejected(): self { return new self(self::REJECTED); } public function getValue(): int { return $this->value; } public function description(): string { return self::DESCRIPTIONS[$this->value]; } public function equals(self $other): bool { return ($this->value === $other->value); } public function __toString(): string { return (string) $this->value; } }