public static function sequence($funcOrString, $firstNum = 1)
{
$n = $firstNum - 1;
if (is_callable($funcOrString)) {
return function () use(&$n, $funcOrString) {
$n++;
return call_user_func($funcOrString, $n);
};
} elseif (strpos($funcOrString, '%d') !== false) {
return function () use(&$n, $funcOrString) {
$n++;
return str_replace('%d', $n, $funcOrString);
};
} else {
return function () use(&$n, $funcOrString) {
$n++;
return $funcOrString . $n;
};
}
}