承接 slince/routing 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

slince/routing

Composer 安装命令:

composer require slince/routing

包简介

A flexible web routing component

README 文档

README

Build Status Coverage Status Latest Stable Version Scrutinizer

A flexible web routing component.

Installation

Install via composer

composer require slince/routing

Quick example

$routes = new Slince\Routing\RouteCollection();
$routes->get('/products', 'Products::index')->setName('product_index');

$request = Zend\Diactoros\ServerRequestFactory::fromGlobals(); //Creates the psr7 request instance

$matcher = new Slince\Routing\Matcher($routes);
$generator = new Slince\Routing\Generator($request);

$route = $matcher->matchRequest($request); //Matches the current request
var_dump($route->getComputedParamters()); //Dumps route computed paramters
echo $generator->generate($route); //Generates path 

$route = $routes->getByAction('Products::index');
echo $generator->generate($route); //Generates path 

$route = $routes->getByName('product_index');
echo $generator->generate($route); //Generates path 

Usage

Defines routes

Creates an instance of Slince\Routing\RouteCollection first,

$routes = new Slince\Routing\RouteCollection();
$route = new Slince\Routing\Route('/products/{id}', 'Products::view');
$routes->add($route);

The route path contain the placeholder {id} which matches everything except "/" and "." You can set custom requirements with setRequirement method or setRequirements method.

$route->setRequirements([
    'id' => '\d+'
]);

Routing supports optional placeholder, you can provide a default value for the placeholder.

$route->setDefaults([
    'id' => 1
]);

The route can match /products and /products/1.

Shorthands for HTTP methods are also provided.

$routes = new RouteCollection();

$routes->get('/pattern', 'action');
$routes->post('/pattern', 'action');
$routes->put('/pattern', 'action');
$routes->delete('/pattern', 'action');
$routes->options('/pattern', 'action');
$routes->patch('/pattern', 'action');

Customize HTTP verb

$route->setMethods(['GET', 'POST', 'PUT']);

Host matching

You can limit a route to specified host with setHost method.

$routes->create('/products', 'Products::index')
    ->setHost('product.domain.com');

The route will only match the request with product.domain.com domain

Force route use HTTPS or HTTP

Routing also allow you to define routes using http and https.

$routes = new Slince\Routing\RouteCollection();

$routes->https('/pattern', 'action');
$routes->http('/pattern', 'action');

Or customize this.

$route->setSchemes(['http', 'https']);

Match a path or psr7 request.

$routes = new Slince\Routing\RouteCollection();
$routes->create('/products/{id}.{_format}', 'Products::view');
$matcher = new Slince\Routing\Matcher($routes);

try {
    $route = $matcher->match('/products/10.html');
    
    print_r($route->getComputedParameters())// ['id' => 10, '_format' => 'html']
    
} catch (Slince\Routing\Exception\RouteNotFoundException $e) {
    //404
}

Matcher will return the matching route. If no matching route can be found, matcher will throw a RouteNotFoundException.

Match a Psr\Http\Message\ServerRequestInterface.

$request = Zend\Diactoros\ServerRequestFactory::fromGlobals();
try {
    $route = $matcher->matchRequest($request);
} catch (Slince\Routing\Exception\MethodNotAllowedException $e) {
    //403
    var_dump($e->getAllowedMethods());
} catch (Slince\Routing\Exception\RouteNotFoundException $e) {
    //404
}

Generate path for a route

$generator = new Slince\Routing\Generator();

$route = new Slince\Routing\Route('/foo/{id}', 'action');
echo $generator->generate($route, ['id' => 10]); //will output "/foo/10"

If you want generate the absolute url for the route, you need to provide generator with a request as request context.

$request = Zend\Diactoros\ServerRequestFactory::fromGlobals();
$generator->setRequest($request);

echo $generator->generate($route, ['id' => 10], true); //will output "{scheme}://{domain}/foo/10"

License

The MIT license. See MIT

统计信息

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

GitHub 信息

  • Stars: 5
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-12-22

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固