Пишу маршрутизатор, использую регулярное выражение. На выходе preg_match возвращает false. routes.php
<?php
use test_shop\Router;
Router::add('^$', ['controller' => 'Main', 'action' => 'index']);
Router::add('^(?P<controller>[a-z-])+/?(?<action>[a-z-]+)?$');
Router.php
<?php
namespace test_shop;
class Router
{
protected static $routes = [];
protected static $route = [];
public static function add($regexp, $route = [])
{
self::$routes[$regexp] = $route;
}
public static function getRoutes()
{
return self::$routes;
}
public static function getRoute()
{
return self::$route;
}
public static function dispatch($url)
{
if (self::matchRoute($url)){
echo 'OK';
}else {
echo 'NO';
}
}
public static function matchRoute($url)
{
foreach (self::$routes as $pattern => $route) {
if (preg_match("#{$pattern}#", $url,$matches)) {
foreach ($matches as $k => $v) {
if (is_string($k)) {
$route[$k] = $v;
}
}
if (empty($route['action'])){
$route['action'] = 'index';
}
debug($route);
return true;
}
} return false;
}
}
На выходе http://localhost/test_shop/
выдаёт NO
Версия PHP 7.0
Если написать if(!preg_match ....
то На выходе http://localhost/test_shop/
выдаёт
Array
(
[controller] => Main
[action] => index
)
OK
Если в url указать дальнейший путь, то значение в массиве не меняться
class App
{
public static $app;
public function __construct()
{
$query = trim($_SERVER['QUERY_STRING'], '/');
session_start();
self::$app = Registry::instance();
$this->getParams();
new ErrorHandler();
Router::dispatch($query);
}
protected function getParams(){
$params = require_once CONFIG . '/params.php';
if(!empty($params)) {
foreach ($params as $k => $v) {
self::$app->setProperty($k,$v);
}
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Привет, я с вордпресом вообще на ВыПомогите советом как можно реализовать следующее
Страница работает -http://uk/basic/web/indexphp?r=site%2Fcontact Раскоментирываю строчки в Yii2