@@ -89,7 +89,7 @@ class AppRouter implements AppRouterInterface
89
89
*
90
90
* @var string
91
91
*/
92
- private static string $ routeReplacePattern = '%%$1%% ' ;
92
+ // private static string $routeReplacePattern = '%%$1%%';
93
93
94
94
/**
95
95
* Current Routing Info
@@ -221,9 +221,9 @@ public static function init(LoggerInterface $logger = null, array $options = [])
221
221
}
222
222
223
223
//@todo: документация!
224
- if (array_key_exists ('routeReplacePattern ' , $ options )) {
224
+ /* if (array_key_exists('routeReplacePattern', $options)) {
225
225
self::$routeReplacePattern = $options['routeReplacePattern'];
226
- }
226
+ }*/
227
227
228
228
if (array_key_exists ('allowEmptyGroups ' , $ options )) {
229
229
self ::$ option_allow_empty_groups = (bool )$ options ['allowEmptyGroups ' ];
@@ -247,10 +247,10 @@ public static function init(LoggerInterface $logger = null, array $options = [])
247
247
public static function setOption ($ name , $ value = null )
248
248
{
249
249
switch ($ name ) {
250
- case 'routeReplacePattern ' : {
250
+ /* case 'routeReplacePattern': {
251
251
self::$routeReplacePattern = $value;
252
252
break;
253
- }
253
+ }*/
254
254
case 'allowEmptyGroups ' : {
255
255
self ::$ option_allow_empty_groups = (bool )$ value ;
256
256
break ;
@@ -578,38 +578,42 @@ public static function group(array $options = [], callable $callback = null)
578
578
/**
579
579
* Возвращает информацию о роуте по имени
580
580
*
581
- * @todo: добавить аргумент "кастомная маска", перекрывающая дефолтное значение?
582
- *
583
- * По-хорошему, getRouter доступен только после dispatch(), уже в обработчиках.
584
- * То есть до списка правил надо стучаться через коллекцию роутов из FastRoute ядра. Но как?
585
- *
586
- * @param string $name
587
- * @param string $default
588
- * @param bool $replace_parts
581
+ * @param string $name - имя роута
582
+ * @param array $parts - массив замен именованных групп на параметры
589
583
* @return string|array
590
584
*/
591
- public static function getRouter ($ name = '' , string $ default = ' / ' , bool $ replace_parts = false )
585
+ public static function getRouter ($ name = '' , array $ parts = [] )
592
586
{
593
587
if ($ name === '* ' ) {
594
588
return self ::$ route_names ;
595
589
}
596
590
597
591
if ($ name === '' ) {
598
- return $ default ;
592
+ return self :: $ option_getroute_default_value ;
599
593
}
600
594
601
595
if (array_key_exists ($ name , self ::$ route_names )) {
602
596
$ route = self ::$ route_names [ $ name ];
603
597
604
- if ($ replace_parts ) {
598
+ // заменяем именованные группы-плейсхолдеры на переданные переменные?
599
+ if (!empty ($ parts )) {
600
+ foreach ($ parts as $ key => $ value ) {
601
+ $ pattern = "/\[?\{( {$ key })(\: \\\\\w+\+)?\}\]?/ " ;
602
+ $ route = preg_replace (
603
+ $ pattern ,
604
+ $ value ,
605
+ $ route
606
+ );
607
+ }
608
+ }
609
+
610
+ /*if ($replace_parts) {
605
611
$route = preg_replace(
606
612
'/{([[:word:]]+)}/',
607
613
self::$routeReplacePattern,
608
614
$route
609
615
);
610
- }
611
-
612
- //@todo: а как заменять именованные группы-плейсхолдеры на переданные переменные?
616
+ }*/
613
617
614
618
// заменяем необязательный слэш в конце на обязательный
615
619
if (self ::$ option_getroute_replace_optional_slash_to_mandatory ) {
0 commit comments