2017 © Pedro Peláez
 

library route

A simple framework for routing URLs in PHP.

image

meekframework/route

A simple framework for routing URLs in PHP.

  • Monday, October 23, 2017
  • by nbish11
  • Repository
  • 1 Watchers
  • 0 Stars
  • 6 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

Meek-Routing Component

![Scrutinizer Build Status][scrutinizer-build-image] ![Scrutinizer Code Quality][scrutinizer-code-quality-image] ![Scrutinizer Code Coverage][scrutinizer-code-coverage-image] Packagist Latest Stable Version MIT License, (*1)

A simple framework for routing., (*2)

Installation

With Composer:, (*3)

composer require meekframework/route

Usage

Using the router with the front controller pattern is probably the common use:, (*4)

use Meek\Route\Collection;
use Meek\Route\Mapper;
use Meek\Route\Matcher;
use Meek\Route\Dispatcher;
use Zend\Diactoros\Response\TextResponse;
use Zend\Diactoros\ServerRequestFactory;
use Zend\Diactoros\Response\SapiEmitter;
use Meek\Route\TargetNotMatched;
use Meek\Route\MethodNotMatched;
use Psr\Http\Message\ServerRequestInterface;

// any PSR7 compliant library can be use to generate server requests
$serverRequest = ServerRequestFactory::fromGlobals();
$collection = new Collection();
$map = new Mapper($collection);
$matcher = new Matcher($collection);
$dispatcher = new Dispatcher($matcher);

$map->get('/', function (ServerRequestInterface $request) {
    // a PSR7 responses must be returned
    return new TextResponse('Hello, world!');
});

$map->get('/posts', function (ServerRequestInterface $request) {
    return new TextResponse('Viewing all posts!');
});

$map->get('/posts/:id', function (ServerRequestInterface $request) {
    return new TextResponse(sprintf('You are viewing post "%s"!', $request->getAttribute('id')));
});

// etc...
$map->head('/', function (ServerRequestInterface $request) { ... });
$map->put('/', function (ServerRequestInterface $request) { ... });
$map->post('/', function (ServerRequestInterface $request) { ... });
$map->delete('/', function (ServerRequestInterface $request) { ... });
$map->options('/', function (ServerRequestInterface $request) { ... });

try {
    $response = $dispatcher->dispatch($serverRequest);
} catch (TargetNotMatched $e) {
    $response = new TextResponse('Not Found', 404);
} catch (MethodNotMatched $e) {
    $response = new TextResponse('Method Not Allowed', 405, ['allow' => $e->getAllowedMethods()]);
}

(new SapiEmitter())->emit($response);

API

Contributing

See CONTRIBUTING.md., (*5)

Credits/Authors

License

The MIT License (MIT). Please see LICENSE.md for more information., (*6)

The Versions