public static function getInstance($value, $unit) { if (!array_key_exists($unit, self::UNIT)) { throw new InvalidArgumentException('Time unit "%s" is not recognized.', $unit); } $setter = 'set' . ucfirst($unit); return (new self())->{$setter}($value); }