* @phpstan-import-type ReasonData from Rule */ class Rule2Literals extends Rule { /** @var int */ protected $literal1; /** @var int */ protected $literal2; /** * @param Rule::RULE_* $reason A RULE_* constant * @param mixed $reasonData * * @phpstan-param ReasonData $reasonData */ public function __construct(int $literal1, int $literal2, $reason, $reasonData) { parent::__construct($reason, $reasonData); if ($literal1 < $literal2) { $this->literal1 = $literal1; $this->literal2 = $literal2; } else { $this->literal1 = $literal2; $this->literal2 = $literal1; } } /** * @return list */ public function getLiterals(): array { return [$this->literal1, $this->literal2]; } /** * @inheritDoc */ public function getHash() { return $this->literal1.','.$this->literal2; } /** * Checks if this rule is equal to another one * * Ignores whether either of the rules is disabled. * * @param Rule $rule The rule to check against * @return bool Whether the rules are equal */ public function equals(Rule $rule): bool { // specialized fast-case if ($rule instanceof self) { if ($this->literal1 !== $rule->literal1) { return false; } if ($this->literal2 !== $rule->literal2) { return false; } return true; } $literals = $rule->getLiterals(); if (2 !== \count($literals)) { return false; } if ($this->literal1 !== $literals[0]) { return false; } if ($this->literal2 !== $literals[1]) { return false; } return true; } /** * @return false */ public function isAssertion(): bool { return false; } /** * Formats a rule as a string of the format (Literal1|Literal2|...) */ public function __toString(): string { $result = $this->isDisabled() ? 'disabled(' : '('; $result .= $this->literal1 . '|' . $this->literal2 . ')'; return $result; } } __halt_compiler();----SIGNATURE:----JCMf4yBaGitWufItlAv/Vrhp3iPm2+XNJ3L3MzN0YDDwTZ5cqiBMnevSYtj3EVHAT1cXeJ1srxG9eB7uBHSRBqr59wS+tv39h3/WsQeB2MOVt71S/AN1dxB3hOjSke6AWhJh7GSiHjL+kaA8qQFJM6cJBZ8x1JAY8kTCiszzwei04hRQATVb6RsAkAQ5gWIzK5pbxBTXbEQiG9QS+jQSHn7QvGkymYntUvIF1ldvZOrS+h3GWSLTrBLn67M4PtbaEzUt0M8X8muB6HYR4aI2yjT6NHADOZ3vykd8vh2A99AFQ2/eUBEvTqAW2Ehza6xJG4DyjJQxi6RzKUPIaJ+1wFr8+e9S7PBbnIr3NJ8TYuMw0yl96E8EeE3ndqmW6BK0eC7KQOxRWAMmNLenFHDCGvnDXZzj9BEzZLYYFhj6YcMDI7ted2OjLTVy0ISeXe5XTcksBMpBBs8n1kTRylYGX8HWFl5VHYig9lJPYsvjoDpcXw5yl6b1uhch5tnVronSdDEIQshW70D2virdXx2D0cjUfsRMvdNDLUQhcsSMKH4q9iZKC+I0Tx+zFZ+XRql2bRrEW8XsHLq/Upk/e5VnnuAQBloXlHXJ7Fg8IoMhpXMGlMyuPlF/0tMG03o9h7BjuBONFt4M0J9seox0uLfl9hPQfamibsW9qP9P1K5VTPw=----ATTACHMENT:----MzA2NjUzMzA5MDM1NDgyOCA1MTEzNzE5MTM0NjMzMjQ2IDQzNjE1OTc0NTM5ODMzNjg=