PHPackages                             jacsonsantos/gugaio - 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. jacsonsantos/gugaio

ActiveLibrary[Framework](/categories/framework)

jacsonsantos/gugaio
===================

The Framework PHP.

2.0.0.x-dev(8y ago)30MITPHP

Since Apr 30Pushed 8y ago1 watchersCompare

[ Source](https://github.com/jacsonsantos/gugaio)[ Packagist](https://packagist.org/packages/jacsonsantos/gugaio)[ Docs](http://jsmaker.com.br)[ RSS](/packages/jacsonsantos-gugaio/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (10)Versions (8)Used By (0)

[![gugaio](https://camo.githubusercontent.com/dee4f840ca74459478165a7b8009a3cebe5f527045e7fd103a0bbde79b9e7272/687474703a2f2f6f6936332e74696e797069632e636f6d2f616231656e372e6a7067)](https://camo.githubusercontent.com/dee4f840ca74459478165a7b8009a3cebe5f527045e7fd103a0bbde79b9e7272/687474703a2f2f6f6936332e74696e797069632e636f6d2f616231656e372e6a7067)

Gugaiô - Framework
==================

[](#gugaiô---framework)

O Gugaiô é um framework PHP, desenvolvido com Silex e outros componentes, o mesmo já tem disponivel o ORM Eloquent, assim facilitando a manipulado de dados. O Gugaiô foi feito para facilitar o desenvolvimento de APIs, pois o mesmo já vem com autenticação JWT, assim aumentando a segunça a cada requisição.

Sobre
-----

[](#sobre)

O Gugaiô foi desenvolvido com [Silex](https://silex.sensiolabs.org) na versão 2.0. Então você pode trabalhar tranquilamente com todas funcionalidades do mesmo no Gugaiô. O ORM utilizado no Gugaiô é o [Eloquent](https://github.com/illuminate/database), assim facilitando a manipulação de dados igual ao [Laravel](https://laravel.com).

Sumario
-------

[](#sumario)

- Iniciando
- Configurando
- Token
- Email
- Banco de Dados
- Rotas
- Model
- Controller
- Views
- Comandos gugaio

Iniciando
---------

[](#iniciando)

```
git clone https://github.com/jacsonsantos/gugaio.git
cd gugaio
composer install

```

Configurando
------------

[](#configurando)

Primeiro execute o seguinte comando:

```
php gugaio make:config

```

Após executar o comando anterior, será gerado o seguinte arquivo **config.yml**, agora já podemos configurar a aplicação.
Abrir *config.yml*.

```
DEBUG: true

```

O campo *DEBUG* habilita o Debug da aplicação

```
VERSION: v1

```

Versão da API

Token
-----

[](#token)

```
TOKEN:
    SECRET: 'yourSecret'
    ISS: ''
    JTI: '4f1g23a12aa'
    REMOTE: 'HMAC'
    EXPIRES: 3600

```

Configuração para gerar token. Por padrão já vem configurado, faltando apenas sua chave de segurança (assinatura) em *SECRET*.
Para gerar token utilizamos a seguinte lib: *lcobucci/jwt* na versão 3.2. Para mais informações acesse [lcobucci/jwt](https://github.com/lcobucci/jwt).
Para gerar token use o seguinte provider:

```
//Gerar Token
$token = $app['jwt']->generateToken();
```

```
//Valida Token
$app['jwt']->validateToken($token);
```

Email
-----

[](#email)

Para trabalhar com envio e recebimento de e-mails, informe as credenciais do mesmo.

```
USER:
    USERNAME: ''
    PASSWORD: ''

```

Para envio de email foi utilizado a seguinte lib: *swiftmailer/swiftmailer* na versão 5.4. Para mais informações acesse [swiftmailer/swiftmailer](http://swiftmailer.org/docs/introduction.html).
Registrando Serviço de Email:

```
php gugaio register:mailer

```

Instale o SwiftMailer antes de usar o serviço *mailer*

```
composer require swiftmailer/swiftmailer

```

Como enviar e-mails:

```
$message = \Swift_Message::newInstance();
$app['mailer']->send($message);
```

Saiba mais [aqui](http://swiftmailer.org/docs/introduction.html).

Para receber de email foi utilizado a seguinte lib: *ddeboer/imap* na versão 0.5.2. Para mais informações acesse [ddeboer/imap](https://github.com/ddeboer/imap). É necessario baixar o ddeboer/imap, para isso use:

```
composer require ddeboer/imap

```

Depois registre:

```
php gugaio register:imap

```

Como usar:

```
$mailbox = $app['imap.connection']->getMailbox('INBOX');
```

Saiba mais [aqui](https://github.com/ddeboer/imap).

Banco de Dados
--------------

[](#banco-de-dados)

Informe os dados necessarios de seus banco.

```
DB:
    DRIVE: 'mysql'
    HOST: 127.0.0.1
    DBNAME: ''
    PORT: 3306
    USERNAME: ''
    PASSWORD: ''
    CHARSET: 'utf8'
    COLLATION: 'utf8_unicode_ci'
    PREFIX: ''

```

Como usar o provider de conexão.

```
$prepare = $app['connection']->prepare($sql);
$prepare->execute();
```

Trabalhando com Model usando Eloquent ORM.
Para criar um novo Model use:

```
php gugaio make:model MyNewModel

```

Saiba mais [aqui](https://laravel.com/docs/5.4/eloquent#eloquent-model-conventions).

Rotas
-----

[](#rotas)

Todas as rotas estão centralizadas no diretorio *src/Router*.
No diretorio Router possui dois arquivos, *Router* e *RouterAuth*.

#### Router

[](#router)

O arquivo *Router.php* fica todas as rotas sem validação de Token.
**Como adicionar uma nova Rota**
*Exemplo 01*.

```
$router->get('/users', function () {
        return JSantos\Model\User::all();
    });
```

*Exemplo 02*.

```
$router->get('/users', 'user:index');
```

*Exemplo 03*.[http://seuurl.com/users/{id}](http://seuurl.com/users/%7Bid%7D)

```
$app->mount('/users', function ($users) use ($app) {
    //exe01
    $users->get('/{id}', function ($id) {
        return JSantos\Model\User::find($id);
    });
    //exe02
    $users->get('/{id}', 'user:index');
});
```

#### RouterAuth

[](#routerauth)

O arquivo *RouterAuth.php* fica todas as rotas com validação de Token por requisição.
**Como adicionar uma nova Rota**
*Exemplo 01*.
GET - **

```
$auth->get('/users', function () {
        return JSantos\Model\User::all();
    });
```

*Exemplo 02*.
POST - **

```
$auth->get('/users', 'user:read');
$auth->post('/users', 'user:create');
$auth->put('/users', 'user:update');
$auth->delete('/users', 'user:delete');
```

### Criando Rotas por Comandos

[](#criando-rotas-por-comandos)

Com *make:router* você pode criar um grupo de rotas para o serviço de um Controller
*--service* recebe o nome do serviço registrado para seu Controller.

**Exemplo:**

```
php gugaio make:router product --service=product

```

**Resultado:**
Em: /src/Router/Router.php

```
$app->mount($app['api_version'], function ($router) use ($app) {
	$router->get('/product', 'product:read');
	$router->get('/product/{id}', 'product:get');
	$router->post('/product', 'product:create');
	$router->put('/product', 'product:update');
	$router->delete('/product/{id}', 'product:delete');
});
```

Você tambem pode passar o nome do grupo de rotas, usando *--group*.

```
php gugaio make:router product --service=product --group=products

```

**Resultado:**
Em: /src/Router/Router.php

```
$app->mount($app['api_version'].'/products', function ($products) use ($app) {
    $products->get('/product', 'product:read');
    $products->get('/product/{id}', 'product:get');
    $products->post('/product', 'product:create');
    $products->put('/product', 'product:update');
    $products->delete('/product/{id}', 'product:delete');
});
```

Para criar apenas um rota simples com um metodo HTTP, use:

```
php gugaio make:router product --method=get

```

*Resultado:*
Em /src/Router/Router.php

```
$app->get($app['api_version'].'/product', function() use ($app) {

});
```

**Para Criar Rotas com Autenticação JWT use --auth=true:**

```
php gugaio make:router product --service=product --auth=true

```

Resultado:
Em: /src/Router/RouterAuth.php

```
    $auth->get('/product', 'product:read');
    $auth->get('/product/{id}', 'product:get');
    $auth->post('/product', 'product:create');
    $auth->put('/product', 'product:update');
    $auth->delete('/product/{id}', 'product:delete');
```

**Rotas simple com JWT**

```
php gugaio make:router product --method=post --auth=true

```

Resultado:
Em: /src/Router/RouterAuth.php

```
    $auth->post($app['api_version'].'/product', function() use ($app) {

    });
```

Model
-----

[](#model)

Para Trabalhar com Model no Gugaiô é muito facil, o mesmo possui Eloquent ORM.
Para criar um novo Model use:

```
php gugaio make:model MyNewModel

```

Saiba mais [aqui](https://laravel.com/docs/5.4/eloquent#eloquent-model-conventions).
Caso não goste de usar ORM, você pode usar o serviço *$app\['connection'\]*, onde o mesmo te entrega uma instancia PDO.
Você tambem pode fazer um *CRUD* facilmente extendendo a classe *Repository* ou usando:

```
php gugaio make:repo MyRepository

```

Controller
----------

[](#controller)

Para criar um Controller use:

```
php gugaio make:controller MyController

```

Resultado:
*src/Controller/MyController.php*

```
