vir-mir/router

简单的PHP路由器,支持REST和反向路由。

dev-master 2015-03-03 17:03 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:20:43 UTC


README

路由处理

  • 可配置的HTTP方法
  • REST - 方法
  • 可以按组排列
  • 按域名分割URL

通过 composer 安装

{
    "require": {
        "vir-mir/router": "dev-master"
    }
}

描述

URL配置

为 .htaccess 配置

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)$ index.php [NC,L]

PHP实现示例

<?php
require __DIR__.'/vendor/autoload.php';

use VMRouter\RouteCollection;
use VMRouter\Router;
use VMRouter\Route;

$collection = new RouteCollection();
$collection->attach(new Route('/users/', array(
    'controller' => 'Controller\User::usersCreateAction',
    'methods' => 'POST',
    'domains' => ['site.ru', 'strore.site.ru'], // будет работать только на указанных доменах
)));

$collection->attach(new Route('/users/(?P<user_id>\d+)/', array(
    'controller' => 'Controller\User::getUAction',
    'methods' => 'GET',
    'domains' => ['*'] // все домены 
)));

$router = new Router($collection);
$route = $router->matchCurrentRequest();

var_dump($route);

从文件夹中加载

<?php
// index.php

require __DIR__.'/vendor/autoload.php';

use VMRouter\Router;
use VMRouter\RouteCollection;

$router = new Router(new RouteCollection());

$route = $router
	->setRoutesDir(__DIR__ . '/router/') // путь до папки с Routes
	->setRoutes()
	->matchCurrentRequest();


var_dump($route);
<?php
// router/urers.php

use VMRouter\Route;

$routes = [];


array_push($routes, new Route('/users/', array(
			'controller' => 'someController::users_create',
			'methods' => 'GET'
		)));

array_push($routes, new Route('/users/(?P<user_id>\d+)/cover/', array(
			'controller' => 'someController::users_create',
			'methods' => 'GET'
		)));

array_push($routes, new Route('/users/(?P<user_id>\d+)/', array(
			'controller' => 'someController::users_create',
			'methods' => 'GET'
		)));


return $routes;