定制 superatom/routing 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

superatom/routing

Composer 安装命令:

composer require superatom/routing

包简介

The Superatom Routing package.

README 文档

README

This library provides a regular expression based fast routing.

Acknowledgment

Original regex matching implementation by nikic/FastRoute.
Very thanks to nikic and other contributors.

Install

Require this package in your composer.json

"superatom/routing": "1.*"

Usage

Hello world example

<?php
require_once '/path/to/vendor/autoload.php';

$handler = new \Superatom\Routing\RouteHandler();
$generator = new \Superatom\Routing\RouteDataGenerator();
$router = new \Superatom\Routing\Router($handler, $generator);
$router->get('/', function()
{
    return 'Hello world!';
});

echo $router->handle($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);

Save as hello.php
And run in terminal php -S localhost:8080 hello.php
Open localhost:8080/ in browser.

Route with parameter

$router->get('/hello/:name', function($name)
{
    return "Hello {$name}!";
}, $name_for_this_route = 'hello');

Open localhost:8080/hello/atom in browser.

Reverse routing

$router->get('/:var1/:var2', function($var1, $var2)
{
    return "got {$var1} and {$var2}";
}, 'route1');

echo $router->urlFor('route1', ['var1' => 'hoge', 'var2' => 'piyo']);

Custom route handler

use \Superatom\Routing\Route;

class ControllerHandler implements \Superatom\Routing\RouteHandlerInterface
{
    /**
     * @param Route $route
     * @return mixed
     */
    public function handleRoute(Route $route)
    {
        list($class, $method) = explode('@', $route->getHandler());
        $controller = new $class();

        // controller setup...
        // e.g. Dependency injection

        $handler = [$controller, $method];

        return call_user_func_array($handler, $route->getVariables());
    }
}

class HelloController
{
    public function greeting($name)
    {
        return "Hello {$name}!";
    }
}

$handler = new ControllerHandler();
$generator = new \Superatom\Routing\RouteDataGenerator();
$router = new \Superatom\Routing\Router($handler, $generator);
$router->get('/hello/:name', 'HelloController@greeting');

echo $router->handle($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);

Open localhost:8080/hello/atom in browser.

License

MIT

统计信息

  • 总下载量: 128
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-04-19