2. Ivan Rosolen
Graduado em Sistemas de Informação
Pós-graduado em Gerência de Projetos
Desenvolvedor a 14+ anos
Autor de vários PHPT (testes para o PHP)
Entusiasta de novas tecnologias
Head of Innovation @ Arizona
CTO @ Mokation
7. API com informações de Ceveja!
GET - http://hostname/cerveja/
POST - http://hostname/cerveja/
cerveja[nome]
cerveja[estilo]
PUT - http://hostname/cerveja/NOME
cerveja[nome]
cerveja[estilo]
DELETE - http://hostname/cerveja/NOME
13. Respect/Config
- Apenas arquivos .INI
- Usa o mesmo parser nativo e rápido do php.ini
- Extende o arquivo .INI com seu próprio “dialeto”
- Implementa lazy loading para instâncias de objeto
https://github.com/Respect/Config
15. Respect/Relational
- Quase zero de configuracão (convenção)
- Fluent interface: $mapper->author[7]->fetch();
- Diferentes tipos de banco de dados
- Registros são tratados como Plain Data Object
https://github.com/Respect/Relational
16. <?php
use RespectRelationalMapper;
// criar instância PDO com o banco
$mapper = new Mapper(new PDO('seudsn'));
// buscar todos os autores
$authors = $mapper->author->fetchAll();
// criar objeto de um registro
$obj = new stdClass;
$obj->name = 'Ivan Rosolen';
// "gravar" informação no banco
$mapper->author->persist($obj);
$mapper->flush();
17. Respect/Validation
- Fluent/Chained interface: v::numeric()->positive()->between(1,
256)->validate($num)
- 100+ validadores testados
- Fácil extender ou criar novas regras (Concrete API)
- Php 7 ( Quase pronto )
https://github.com/Respect/Validation
18. use RespectValidationValidator as v;
// validar número simples
v::numeric()->validate(42); //true
// validar em cadeia
$v = v::arr() // validar se é array
->key('nome', $rule = v::alnum()->notEmpty()->noWhitespace()) // validar a key 'nome'
->key('estilo', $rule) // utilizando a mesma regra da key de cima
->validate($_POST['cerveja']);
// negação de qualquer regra
$v = v::not(v::int())->validate(10); // false
// operadores lógicos
v::allOf(v::numeric(), v::hexa(), v::min(1)); // numeric, hexadecimal e pelo menos 1
v::oneOf(v::nullValue(), v::numeric()); // null ou numeric
19. Respect/Router
- Thin and lightweight controller para aplicações
RESTful e APIs
- “Don't try to change PHP, small learning curve.”
- If/Before/After/Accept/Auth/Any/By …
https://github.com/Respect/Rest
20. <?php
use RespectRestRouter;
// Criar instância do router
$router = new Router; // raiz http://example.com/
// instância para trabalhar em uma subpasta
$router = new Router('/pasta'); // raiz http://example.com/pasta
// Olá mundo
$router->get('/', function() {
return 'Hello World';
});
// Separando regras das rotas :D
$router->get('/api/uri/*/*', 'NamespaceCoolClass');
$router->post('/api/uri/', 'NamespaceCoolClass');
$router->put('/api/uri/', 'NamespaceCoolClass');
$router->delete('/api/uri/*', 'NamespaceCoolClass');
22. <?php
require_once realpath(__DIR__ . '/vendor/autoload.php');
use RespectRestRouter;
use RespectConfigContainer;
use RespectValidationValidator as v;
use RespectRelationalMapper;
//Ler arquivo de configuração
$config = new Container('config.ini');
// Criar instância PDO com o SQLite usando as configs
$mapper = new Mapper(new PDO($config->dsn_sqlite));
// Criar instância do router
$router = new Router();
//Rota para qualquer tipo de request (any)
$router->any('/', function () {
return 'RestBeer!';
});