Back-End

11 jun, 2013

Respect: um microframework de respeito!

Publicidade

Era difícil imaginar, lá em 2010, que um modesto projeto PHP brasileiro no GitHub, sem nenhuma empresa por trás e sem nenhum programador dedicado 100% para desenvolvê-lo, ganharia milhares de usuários e dezenas de contribuidores de diversos países.

O nome Respect veio de uma das preocupações iniciais do projeto: não apenas respeitar standards e patterns mas tornar o uso deles uma experiência agradável, e não um inferno particular.

respect

Sem dúvida o componente mais famoso do Respect é o Respect\Validation, feito para validar qualquer informação e, se houver uma falha, indicá-la de forma clara. O Exemplo 1 valida se uma string tem de 1 a 15 caracteres, somente letras, números e o caractere “_”. Esse é o formato de um nome de usuário do Twitter.

Exemplo 1: Validando um nome de usuário do Twitter

<?php
use Respect\Validation\Rules;
$usernameValido = new Rules\AllOf(,
  new Rules\String
  new Rules\Alnum("_"),
  new Rules\Length(0, 15)
);
$usernameValido->validate('phprespect'); //true
$usernameValido->validate('Foo#bar'); //false

O Respect é conhecido tanto por sua flexibilidade quanto por sua elegância, e o mesmo validador de cima pode ser escrito como no Exemplo 2.

Exemplo 2: Validando um nome de usuário do Twitter usando a API fluida.

<?php
use Respect\Validation\Validator as v;
$usernameValido = v::string()->alnum("_")->length(0, 15);
$usernameValido->validate('phprespect'); //true
$usernameValido->validate('Foo#bar'); //false

Há mais do que o Validation pra usar. O Respect é uma sólida caixa de ferramentas para qualquer programador PHP. Existem ferramentas para manipular bancos de dados, validar vários tipos de informações diferentes, configurar componentes, criar APIs e páginas, testar e automatizar aplicações. Muitas outras ferramentas do projeto estão em desenvolvimento.
Exemplo 3: Obtendo dados de tabelas de um banco de dados já existente usando o Respect\Relational.

<?php
use Respect\Relational\Mapper;
// Pode ser SQLite, MySQL, PostgreSQL ou qualquer driver PDO.
$banco    = new PDO('sqlite:db.sq3');
$mapeador = new Mapper($banco);
// Todos os comentários do artigo com id=5 em uma única SQL
$comentarios = $mapeador->comments->articles[5]->fetchAll();

O Respect veio para que você não tenha que escolher apenas um framework e seguir com ele pra sempre. Frameworks são como trilhos (alguns tem até esse nome!), e se você percebe que foi no sentido errado ou se o projeto muda de direção não há muito que fazer. O Respect é uma espécie de microframework e esquiva disso tornando decisões grandes em pequenas.

Você pode usar o Respect desde o começo de um projeto ou adotá-lo depois, sem gambiarras. Pode usar ele sozinho ou com outras ferramentas ou pode usar somente uma parte dele. Tudo é projetado para ser extremamente reutilizável e fácil de manter.
Exemplo 4: Criando uma rota pro caminho /users/algumacoisa na URI com Respect\Rest.

<?php
use Respect\Rest\Router;
$roteador = new Router;
$roteador->get('/users/*', function($screenName) {
   echo "User {$screenName}";
});

Para quem deseja utilizar o Respect com outra solução, existem pontos de integração com ferramentas bastante populares:

  • O Respect Bundle para o Laravel disponibiliza os componentes de validação (Respect\Validation), bancos de dados (Respect\Relational) e Configuração (Respect\Config).
  • O próprio componente Respect\Validation já possui integração nativa pra aproveitar validadores do Zend Framework 1 e 2 ou Symfony 2.
  • Há um Bundle para o Symfony2 em desenvolvimento que permitirá utilizar o mecanismo de Annotations com o Respect\Validation.

Qualidade também é algo que Respect também procura. Os componentes são todos testados desde o começo do desenvolvimento e miram em 100% de cobertura de código.

Se há uma coisa que o Respect mostra é que a comunidade brasileira está preparada para produzir software tão bem quanto qualquer outra comunidade estrangeira.

Conheça mais do Respect:

Conheça outros microframeworks similares ao Respect: http://microphp.org/

***

http://about.me/alganet

***

Este artigo foi publicado originalmente na Revista iMastersAcesse e leia todo o conteúdo.