PHPackages                             juliogomes26297/julius - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. juliogomes26297/julius

ActiveLibrary[Framework](/categories/framework)

juliogomes26297/julius
======================

Julius é um framework simples para criar aplicações Web com arquitetura MVC

1.0(2y ago)020MITPHP

Since Feb 5Pushed 2y ago1 watchersCompare

[ Source](https://github.com/juliogomes97/julius)[ Packagist](https://packagist.org/packages/juliogomes26297/julius)[ RSS](/packages/juliogomes26297-julius/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

Index
-----

[](#index)

- Básico
    - [Primeiro passos](#primeiro-passos)
    - [Rota mais simples](#rota-mais-simples)
    - [Métodos](#m%C3%A9todos)
    - [Parâmetros](#par%C3%A2metros)
    - [Multi Parâmetros](#multi-par%C3%A2metros)
    - [Grupos](#grupos)
    - [Grupos com Parâmetros](#grupos-com-par%C3%A2metros)
    - [Rota não encontrada](#rota-n%C3%A3o-encontrada)
- Avançado
    - [MasterController](#mastercontroller)
    - [Criar controlador](#criar-controlador)
    - [Parâmetros no controlador](#par%C3%A2metros-no-controlador)

Básico
======

[](#básico)

Primeiro passos
---------------

[](#primeiro-passos)

Antes de começar usar o sistema de rotas deve iniciar a método boot()

```
use Julius\Framework\Http\Request;
use Julius\Framework\Routing\Router;

Router::boot(new Request);

// Rotas ...
```

Tip

As tuas rotas deve estar no index.php

Rota mais simples
-----------------

[](#rota-mais-simples)

Aqui temos um exemplo de uma rota mais simples possível, sem complicações

```
// Router::boot(...)

Router::get('/bem-vindo', function(Request $request) {
  echo 'Olá mundo!';
});
```

Important

Todas as rotas devem começar com `/`

Métodos
-------

[](#métodos)

A class `Router` disponibiliza alguns métodos para controle de rota:

```
Router::get();
Router::post();
Router::put();
Router::patch();
Router::delete();
Router::options();
```

Tambem pode usar o método `add()` que o seu primeiro parâmetros será o tipo de método

```
Router::add('GET', ...);
Router::add('POST', ...);

// Outros ....
```

Parâmetros
----------

[](#parâmetros)

Gostamos de passar parâmetros no `uri` como o nome do utilizador ou id de uma postagem, para fazer-mos isso é bastante simples

```
Router::get('/utilizador/:name', function(Request $request, string $name) {
  echo "Olá {$name}";
});
```

Warning

Atenção! O primeiro parâmetro será sempre do tipo `Julius\Framework\Http\Request`, em seguida é que vem os parâmetros customizados.

Podemos definir que tipos de dados queremos que o parâmetro aceite, no exemplo acima ele por defeito aceita qualquer tipo de palavra ou numeros, mas agora vou criar um parâmetro onde só quero que aceite numeros

```
Router::get('/postagem/:id', function(Request $request, string $postagem_id) {
  echo "Esta postagem tem o ID: {$postagem_id}";
}, ['id' => ([0-9]+));
```

Multi Parâmetros
----------------

[](#multi-parâmetros)

Podemos usar numero de parâmetros que for necessario

```
Router::get('/utilizador/:name/postagem/:id', function(Request $request, string $name, string $id) {
  echo "O {$name} tem uma postagem com o ID: {$id}";
}, ['name' => '([a-zA-Z]+)', 'id' => ([0-9]+));
```

Grupos
------

[](#grupos)

Para um código mais limpo e facil de ler era bom agrupar as rotas, não é? Então vamos fazer isso

```
Router::group('/painel', function() {
  // Rota: /painel
  Router::get('/', function(Request $request) {
    echo "Aqui é o landing page ao acessar /painel";
  });
  // Rota: /painel/funcionarios
  Router::get('/funcionarios', function(Request $request) {
    echo "Estamos na página dos funcionarios";
  });
  // Rota: /painel/configuracoes
  Router::get('/configuracoes', function(Request $request) {
    echo "Estamos na página das configurações";
  });
});
```

Aqui temos 3 rotas dentro do grupo `painel`, para acessar basta aceder `/painel`, `/painel/functionarios` ou `/painel/configuracoes`

Note

Se dentro do grupo não tiver nenhuma landing page ele vai dar como rota não encontrada, no exemplo acima temos uma rota que uri é `/`, portante ao aceder `/painel` ele chama essa rota.

Tip

No `uri` da função `group()` não é obrigatorio usar o `/` logo ao inicio, como nas rotas são obrigadas usar o `/` logo de inicio

Grupos com Parâmetros
=====================

[](#grupos-com-parâmetros)

O grupo tambem pode receber parâmetros, vamos ver um exemplo

```
Router::group('utilizador/:id', function() {
  // Rota: /utilizador/123  '([0-9]+)'];

  // Rota: /utilizador/123
