2017 © Pedro Peláez
 

library router

Rudra framework

image

rudra/router

Rudra framework

  • Wednesday, August 1, 2018
  • by jagepard
  • Repository
  • 2 Watchers
  • 1 Stars
  • 400 Installations
  • PHP
  • 3 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 8 Versions
  • 5 % Grown

The README.md

PHPunit Scrutinizer Code Quality Code Climate, (*1)

CodeFactor

Code Intelligence Status Latest Stable Version Total Downloads GitHub, (*2)

Rudra-Router

Устанавливаем маршрут callback/:name для http метода GET

выполняет лямбда-функцию, (*3)

$router->get('callback/:name', function ($name) {
    echo "Hello $name!";
});

Для вызова через Фасад Rudra-Container, (*4)

use Rudra\Router\RouterFacade as Router;

Router::get('callback/:name', function ($name) {
    echo "Hello $name!";
});

вызывает MainController::read, (*5)

$router->get('read/:id', [MainController::class, 'read']);

вызывает MainController::read при помощи добавления аннотаций к MainController, (*6)

/**
 * @Routing(url = ''read/:id')
 */
public function read($id)

вызывает MainController::read и добавляет middleware с ключами before или after соответственно_, (*7)

$router->get('read/page',  [MainController::class, 'read'], ['before'  => [Middleware::class]);

в аннотациях, (*8)

/**
 * @Routing(url = 'read/page')
 * @Middleware(name = 'App\Middleware\Middleware')
 */
public function read()

Для сбора аннотаций необходимо передать массив классов в которых есть аннотации в annotationCollector, (*9)

$router->annotationCollector([
    \App\Controllers\MainController::class,
    \App\Controllers\SecondController::class,
]);

```php Router::annotationCollector([ \App\Controllers\MainController::class, \App\Controllers\SecondController::class, ]);, (*10)

_С параметрами для middleware_
```php
$router->get('', [MainController::class, 'read'], [
    'before' => [FirstMidddleware::class, [SecondMidddleware::class, ['int' => 456, new \stdClass]]],
    'after'  => [FirstMidddleware::class, [SecondMidddleware::class, ['int' => 456, new \stdClass]]]
]);

в аннотациях, (*11)

/**
 * @Routing(url = '')
 * @Middleware(name = 'App\Middleware\FirstMidddleware')
 * @Middleware(name = 'App\Middleware\SecondMidddleware', params = {int : '456'})
 * @AfterMiddleware(name = 'App\Middleware\FirstMidddleware')
 * @AfterMiddleware(name = 'App\Middleware\SecondMidddleware', params = {int : '456'})
 */
public function read()

При передаче параметров в middleware необходимо добавлять параметр "array $params", (*12)

public function __invoke(array $params, array $middlewares)

Если параметры не передаются, то:, (*13)

public function __invoke(array $middlewares)

Следующие вызовы без параметров равны, (*14)

'before' => [FirstMidddleware::class, SecondMidddleware::class]],
'before' => [[FirstMidddleware::class], [SecondMidddleware::class]]

Устанавливаем маршрут create/:id для http метода POST

вызывает MainController::create, (*15)

$router->post('create/:id', [MainController::class, 'create']);

в аннотациях, (*16)

/**
 * @Routing(url = 'create/:id', method = 'POST')
 */
public function create($id)

Устанавливаем маршрут update/:id для http метода PUT

вызывает MainController::update, (*17)

$router->put('update/:id', [MainController::class, 'update']);

в аннотациях, (*18)

/**
 * @Routing(url = 'update/:id', method = 'PUT')
 */
public function update($id)

Устанавливаем маршрут update/:id для http метода PATCH

вызывает MainController::update, (*19)

$router->patch('update/:id', [MainController::class, 'update']);

в аннотациях, (*20)

/**
 * @Routing(url = 'update/:id', method = 'PATCH')
 */
public function update($id)

Устанавливаем маршрут delete/:id для http метода DELETE

вызывает MainController::delete, (*21)

$router->delete('delete/:id', [MainController::class, 'delete']);

в аннотациях, (*22)

/**
 * @Routing(url = 'delete/:id', method = 'DELETE')
 */
public function delete($id)

Устанавливаем маршрут any/:id для http методов GET|POST|PUT|PATCH|DELETE

вызывает MainController::any, (*23)

$router->any('any/:id', [MainController::class, 'any']);

в аннотациях, (*24)

/**
 * @Routing(url = 'any/:id', method = 'GET|POST|PUT|PATCH|DELETE')
 */
public function any($id)

Устанавливаем ресурс для маршрута api/:id, методы GET|POST|PUT|DELETE

вызывает MainController::read для GET, (*25)

вызывает MainController::create для POST, (*26)

вызывает MainController::update для PUT, (*27)

вызывает MainController::delete для DELETE, (*28)

$router->resource('api/:id', MainController::class);

Изменить методы контроллера по умолчанию можно передав массив с вашими именами, (*29)

$router->resource('api/:id', MainController::class, ['actionIndex', 'actionAdd', 'actionUpdate', 'actionDrop']);
Вариант объявления маршрута методом set

Устанавливаем маршрут /test/:id для http методов DELETE|PUT

выполняет лямбда-функцию, (*30)

$router->set(['/test/page', 'POST|PUT', function () {
            echo 'Hello world!';
        }
]);

вызывает MainController::actionIndex, (*31)

$router->set(['/test/:id', 'DELETE|PUT', [MainController::class, 'actionIndex'], [
        'before' => [First::class, Second::class],
        'after'  => [[First::class], [Second::class]]
]]);

Пример Middleware, (*32)

<?php

namespace App\Middleware;

use Rudra\Router\Router;
use Rudra\Router\MiddlewareInterface;

class FirstMiddleware extends Router implements MiddlewareInterface
{
    public function __invoke(array $middlewares)
    {
        $this->next($middlewares);
    }

    public function next(array $middlewares): void
    {
        $this->handleMiddleware($middlewares);
    }
}

Пример Middleware с параметрами с использованием Фасада, (*33)

<?php

namespace App\Middleware;

use Rudra\Router\MiddlewareInterface;
use Rudra\Router\RouterFacade as Router;

class SecondMiddleware implements MiddlewareInterface
{
    public function __invoke(array $middlewares, array $params)
    {
        var_dump($params);
        $this->next($middlewares);
    }

    public function next(array $middlewares): void
    {
        Router::handleMiddleware($middlewares);
    }
}

The Versions

01/08 2018

dev-master

9999999-dev

Rudra framework

  Sources   Download

MIT GPL-3.0-or-later

The Requires

 

The Development Requires

rest restful routing router rudra rest-router

01/08 2018

dev-wip

dev-wip

Rudra framework

  Sources   Download

MIT GPL-3.0-or-later

The Requires

 

The Development Requires

rest restful routing router rudra rest-router

01/08 2018

dev-scrutinizer-patch-1

dev-scrutinizer-patch-1

Rudra framework

  Sources   Download

GPL-3.0-or-later

The Requires

 

The Development Requires

rest restful routing router rudra rest-router

30/07 2018

v2.0.0

2.0.0.0

Rudra framework

  Sources   Download

GPL-3.0-or-later

The Requires

 

The Development Requires

rest restful routing router rudra rest-router

12/10 2017

dev-wip/mint

dev-wip/mint

The Rudra framework

  Sources   Download

MIT

The Requires

 

The Development Requires

rest restful routing router rudra rest-router

21/04 2017

1.2.0

1.2.0.0

The Rudra framework

  Sources   Download

MIT

The Requires

 

The Development Requires

rest restful routing router rudra rest-router

03/04 2017

1.0.0

1.0.0.0

The Rudra framework

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

router rudra