سلام رفقا وقت بخیر
داخل متد تشخیص روت با ریجکس میتونیم موارد مچ شده رو داخل ارایه روت دریافتی با کلید params قرار بدیم و بعد ریترن کنیم
private function routeRegexMached($route): bool|array
{
$pattern = '/^' . str_replace(['/', '{', '}'], ['\/', '(?<', '>[-%\w]+)'], $route['uri']) . '$/';
if (preg_match($pattern, $this->request->uri(), $matches)) {
# append matched in route
foreach ($matches as $key => $value) {
if (!is_int($key)) $route['params'][$key] = $value;
}
return $route;
}
return false;
}
در مرحله dispatch شدن هم با این روش موارد دریافت شده رو میتونیم به متد کلاسمون یا کلوژر پاس بدیم و به صورت پارامتر در اختیار اون فانکشن قرار بدیم
# action : closure
if (is_callable($action)) call_user_func_array($action, array_merge([$this->request], $route['params']));
# action : class method
call_user_func_array([$controller, $method], array_merge([$this->request], $route['params']));