Skip to content

Commit

Permalink
dump
Browse files Browse the repository at this point in the history
  • Loading branch information
albreis committed Sep 20, 2024
1 parent d3c8ea6 commit d64ea9a
Show file tree
Hide file tree
Showing 7 changed files with 277 additions and 115 deletions.
160 changes: 159 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,4 +257,162 @@ $router = new Albreis\Router;
$router->get('/', function($router){
// $router é uma instância do router atual e está sempre disponível
});
```
```

## Usando Registry

Router Registry é uma forma de carregar automaticamente rotas usando DocBlock @Route.

Exemplo:

```php
class HomeController {

/**
* @Route::get('^/?$')
*/
public function index() {
var_dump(123);
}

}
```

#### Como carregar automaticamente arquivos:

```php
<?php

use Albreis\Router;
use Albreis\RouterRegistry;

require '../vendor/autoload.php';

$router = new Router;

$registry = new RouterRegistry($router);

$registry->loadFrom(__DIR__ . '/../src/Http/Controllers', 'App/');

$registry->run();
```

Isso vai fazer com o todas as classes do namespace App/ do diretorio sejam mapeadas.


#### Como carregar uma classe única:

```php
<?php

use Albreis\Router;
use Albreis\RouterRegistry;
use App\Http\Controllers\HomeController;

require '../vendor/autoload.php';

$router = new Router;

$registry = new RouterRegistry($router);

$registry->addClass(HomeController::class);

$registry->run();
```

Isso vai fazer com os metodos da classe sejam mapeados.


#### Usando funções:

Você pode utilizar funções para trabalhar com rotas:

```php
<?php

use Albreis\Router;
use Albreis\RouterRegistry;
use App\Http\Controllers\HomeController;

require '../vendor/autoload.php';

$router = new Router;

$registry = new RouterRegistry($router);

/**
* @Route::get('/hello')
*/
function hello()
{
echo('hello');
}


$registry->loadUserFunctions();

$registry->run();
```

Ao acessar /hello o Router vai executar essa função. Lembre-se que a função precisa existir.

Caso a função esteja em um arquivo externo que ainda não tenha sido feito include/require vocêpode usar o método **loadUserFunctionsFrom()**, ele vai fazer include do arquivo antes de buscar rotas.



```php
<?php

use Albreis\Router;
use Albreis\RouterRegistry;
use App\Http\Controllers\HomeController;

require '../vendor/autoload.php';

$router = new Router;

$registry = new RouterRegistry($router);

$registry->loadUserFunctionsFrom('../functions.php');

$registry->run();
```

#### Adicionar uma função unica



```php
<?php

use Albreis\Router;
use Albreis\RouterRegistry;
use App\Http\Controllers\HomeController;

require '../vendor/autoload.php';

$router = new Router;

$registry = new RouterRegistry($router);

/**
* @Route::get('/hello')
*/
function hello()
{
echo('hello');
}

$registry->addFunction('hello');

$registry->run();
```


### Salvar rotas em arquivo para produção

Em produção o ideal é que a aplicação não fique escaneando os arquivos por rotas a cada requisição.

Para isso você pode gerar um arquivo de rotas usando o método **$registry->save([caminho do arquivo])**.

O caminho padrão do arquivo é routes.php no direotrio atual.
18 changes: 18 additions & 0 deletions vendor/autoload.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,24 @@

// autoload.php @generated by Composer

if (PHP_VERSION_ID < 50600) {
if (!headers_sent()) {
header('HTTP/1.1 500 Internal Server Error');
}
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
if (!ini_get('display_errors')) {
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
fwrite(STDERR, $err);
} elseif (!headers_sent()) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
}

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit2d517e8c984f80b618e3466c2e1cc12f::getLoader();
Loading

0 comments on commit d64ea9a

Please sign in to comment.