eddmann/rootr

本包最新版本(dev-master)没有提供许可证信息。

像老板一样处理路由URL。

dev-master 2014-06-02 12:18 UTC

This package is not auto-updated.

Last update: 2020-01-06 08:13:31 UTC


README

像老板一样处理路由URL。

Build Status Coverage Status Scrutinizer Code Quality

安装

获取composer

wget https://composer.php.ac.cn/composer.phar

然后将其添加到项目根目录下的 composer.json

{
    "require": {
        "eddmann/rootr": "*"
    }
}

现在开始安装

php composer.phar install

Closure 示例

<?php

$router = new Rootr\Router;

$router->get('/', function () {
   return '/';
});

$router->get('/products', function () {
    return '/products';
});

$router->get('/products/{id:\d+}', function ($id) {
   return "/products/$id";
});

$router->get('/products/show/{id:\d+}/{?name}', function ($id, $name = 'na') {
    return "/products/show/$id/$name";
});

$router->get('/product.json', function () {
    $product = json_encode([ 'name' => 'Cheese', 'value' => 12.55 ]);

    return (new Rootr\Response(200, $product))->asJson();
});

$dispatcher = new Rootr\Dispatcher($router);

$response = $dispatcher->dispatch('GET', '/products/4');

$response->render(); // /products/4

控制器示例

<?php

$router = new Rootr\Router;

class ProductController extends Rootr\Controller
{
    public function indexAction()
    {
        return '/products';
    }

    /**
     * @method GET
     * @route /{id:\d+}
     */
    public function displayByIdAction($id)
    {
        return "/products/$id";
    }

    public function showAction($id, $name = 'na')
    {
        return "/products/show/$id/$name";
    }
}

$router->get('/', function () {
    return '/';
});

$router->mountController('/products', 'ProductController');

$dispatcher = new Rootr\Dispatcher($router);

$response = $dispatcher->dispatch('GET', '/products/show/2/cheese');

$response->render(); // /products/show/2/cheese

示例

您可以通过运行以下命令使用PHP内置的web服务器来运行示例

./examples.sh

受以下影响