2017 © Pedro Peláez
 

library router

Access Controller for your website (Router)

image

devbr/router

Access Controller for your website (Router)

  • Sunday, January 21, 2018
  • by pedra
  • Repository
  • 2 Watchers
  • 0 Stars
  • 311 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 0 Forks
  • 2 Open issues
  • 22 Versions
  • 1 % Grown

The README.md

Access Manager - Router

Latest Stable Version Latest Unstable Version License Total Downloads Monthly Downloads, (*1)

Install

Use Composer for easy installation:, (*2)

Composer require devbr/router 

Or install the full base for PHP websites, at "https://github.com/devbr/website"., (*3)

More info: https://packagist.org/packages/devbr/router, (*4)

Access Management

TODO: translate to english, (*5)

Depois de instalado o arquivo de configuração (Config\Devbr\Router), é possível indicar as regras de resposta a solicitações de acesso ao site ou aplicação., (*6)

namespace Config\Devbr;

class Router
{
    function __construct($router)
    {
        $router->respond('get', '/', 'Site\Front::page');
    }
}

Este é o arquivo básico que acompanha a instalação do Router, podendo ser encontrado em "/Config/Devbr/Router.php" (ou na pasta [vendor]/devbr/router/Config/Devbr/Router.php). É neste arquivo que fazemos a configuração de acesso de nossa aplicação ou site., (*7)

Para facilitar o acesso as configurações, sugiro mover a pasta "Config" para o "root" de sua aplicação PHP e acrescentar o seguinte em seu arquivo composer.json:, (*8)

...
    "autoload": {
        "Config\\": {"": ".php/Config/"}
    }
...

<< supondo que ".php/" seja seu fallback (ou raiz) para os arquivos PHP >>, (*9)

A função "respond", responsável por adicionar as rotas de resposta conforme a solicitação de acesso, tem a seguinte sintaxe:, (*10)

TODO: review examples and didactics

$router->respond( <type>, <request>, <controller>, [<action>]);

    <type>:       A string with the following methods: "all", "get", "post", "delete", "put", "patch".
                  Or specify a specific group: "get|post|delete".

    <request>:    String of the requested URI (without site domain).
                        Ex.: "about/me" ==> http://site.com/about/me

    <controller>: Class (object) to manage the request.
                  Name must be a complete string, with NAMESPACE + CLASSNAME. 
                        Ex.: "Devbr\User".
                  Alternatively you can use the following format: "controller::action". 
                        Ex.: "Devbr\User::login".
                  The Controller can also be an anonymous function that receives (or not)
                  parameters of the regular expression in <request>.
                        Ex.: $router->respond('get', 
                                              '/(*)/(*)/(*)', 
                                              function($rqst, $params){ 
                                                  exit( '<pre>'.print_r($params, true));
                                              }
                                             );
                    -- If you request "http://site.com/test/me/now", print on the screen "test me now".

    <action>:     Optional to indicate an action. 
                        Ex.: "login".

Namespace

TODO: translate to english, (*11)

O NAMESPACE tem seu "root" (fallback) na pasta do PHP em seu site ou aplicação., (*12)

Se você instalou o "https://github.com/devbr/website" já terá esta configuração, caso não, acrescente isto em seu composer.json:, (*13)

...
    "autoload": {
        "psr-4": {"": ".php/"}
     }
...    

<< a pasta pode ter outro nome, conforme sua escolha >>, (*14)

Em um servidor Linux, rodando Apache, o root pode estar no seguinte caminho:, (*15)

/var/www/site/.php/

--- pode variar conforme a configuração do servidor.

A partir dessa pasta você pode chamar qualquer recurso (classe), usando o caminho relativo, o patch (caminho) do arquivo da classe., (*16)

Vamos considerar (para exemplo) que a sua classe está no seguinte caminho:, (*17)

/var/www/site/.php/Site/Front/Page.php

Para montar esse objeto use:, (*18)

$page = new Site\Front\Page;

Ou você pode usar a declaração "use", para ficar mais elegante:, (*19)

//Logo abaixo do "namespace":
use Site\Front\Page;
 ....

//Dentro de um método da classe...
$page = new Page;

Usando o ROUTER

No front controller da sua aplicação web (geralmente o arquivo index.php), você pode ter o seguinte:, (*20)

<?php

//Carregando o autoloader do Composer
include '[vendor]/autoload.php';

//Montando e rodando o Router
(new Devbr\Router)->run();

A pasta "vendor" do Composer pode estar, por exemplo, na sua pasta raiz dos arquivos PHP (ex.: ".php/"). O Router, baseado nas configuração (Config\Devbr\Router), vai identificar as requisições e chamar o Controller (e action), passando os parâmetros, seguindo a configuração que você definiu para a rota., (*21)

Você pode querer que o Router apenas identifique as requisições, retornando os dados para que você use algum "midware", antes de chamar o controlador. Para isso, basta desativar o "autorun" do Router, na montagem do objeto:, (*22)

<?php

//Carregando o autoloader do Composer
include '[vendor]/autoload.php';

//Montando e rodando o Router
$router = (new Devbr\Router(false))->run();

//For example, only --¬
echo '<b>Controller:</b> '.$router->getController();

//Or ...
echo '

'.print_r($router, true).'
';

Modo CLI (command line)

O Router também pode ser configurado para tratar acesso em linha de comando (terminal). Para esse caso, o method "CLI" é automáticamente detectado., (*23)

O namespace default é "Devbr\Cli" e pode (deve) ser configurado conforme as necessidades de sua aplicação. Este namespace está ai para funcionar em conjunto com o componente https://github.com/devbr/tools e obter algumas funcionalidades de apoio ao desenvolvedor., (*24)

Com o Devbr\Tools instalado, você pode digitar no terminal:, (*25)

php index.php Main

Onde "Main" é a classe principal desse pacote e, no caso acima, irá obter um "help" das funções disponíveis. Ou Controller not found! caso o Devbr\Tools não esteja instalado., (*26)

Para criar seus próprios objetos para acesso via linha de commando, precisará indicar ao Router o namespace de suas classes para o CLI, na configuração do Router:, (*27)

namespace Config\Devbr;

class Router
{
    function __construct($router)
    {
        $router->setNamespaceCliPrefix('Cli');
        $router-> ... //demais configurações

Nesse exemplo acima, "Cli" é o diretório raíz para as suas classes (a partir do fallback). Considere o seguinte caminho para a sua classe "Tests" (estou confiando que ".php" é o fallback principal, previamente configurado no composer.json, conforme visto anteriormente):, (*28)

/var/www/.php/Cli/Tests.php

Abrindo um terminal e digitando php index.php Tests::action par1 par2, o Router vai montar a classe Cli\Tests, chamar o método action, passando par1 e par2 como parâmetros., (*29)

Caso você digite php index.php Tests (sem o action) o Router chamará o método cliHelp (default), se existir. Você deve criar esse método em suas classes CLI para exibir algum texto de ajuda, para o usuário., (*30)

The Versions

21/01 2018

dev-master

9999999-dev http://dbrasil.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6

 

request router website access controller

20/01 2018

0.2.4

0.2.4.0 http://dbrasil.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6

 

request router website access controller

01/01 2018

0.2.3

0.2.3.0 http://dbrasil.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6

 

request router website access controller

31/12 2017

0.2.2

0.2.2.0 http://dbrasil.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6

 

request router website access controller

12/08 2017

0.2.1

0.2.1.0 http://dbrasil.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6

 

request router website access controller

02/07 2017

0.2.0

0.2.0.0 http://dbrasil.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

28/06 2017

0.1.5

0.1.5.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

28/06 2017

0.1.4

0.1.4.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

28/06 2017

0.1.3

0.1.3.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

28/06 2017

0.1.2

0.1.2.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

11/04 2017

0.1.1

0.1.1.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

11/04 2017

0.0.10

0.0.10.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

11/04 2017

0.1.0

0.1.0.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

28/02 2017

0.0.9

0.0.9.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

28/02 2017

0.0.8

0.0.8.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

24/02 2017

0.0.7

0.0.7.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

20/01 2017

0.0.6

0.0.6.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

04/01 2017

0.0.5

0.0.5.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=5.6.28

 

request router website access controller

03/01 2017

0.0.4

0.0.4.0 http://paulorocha.tk/devbr/

Access Controller for your website (Router)

  Sources   Download

MIT

The Requires

  • php >=7.0.0

 

request router website access controller

03/01 2017

0.0.3

0.0.3.0 http://paulorocha.tk/devbr/

Request router for website

  Sources   Download

MIT

The Requires

  • php >=7.0.0

 

request router website

01/01 2017

0.0.2

0.0.2.0 http://paulorocha.tk/devbr/

Request router for website

  Sources   Download

MIT

The Requires

  • php >=7.0.0

 

request router website

23/12 2016

0.0.1

0.0.1.0 http://paulorocha.tk/devbr/

Request router for website

  Sources   Download

MIT

The Requires

  • php >=7.0.0

 

request router website