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.
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:
- http://respect.li
- http://twitter.com/phprespect
- http://github.com/Respect
- Exemplos: http://github.com/Respect/samples
- Benchmarks: http://github.com/Respect/benchmarks
- Respect Bundle para Laravel: http://bundles.laravel.com/bundle/respect
- Respect\ValidationBundle para Symfony: https://github.com/Respect/ValidationBundle
Conheça outros microframeworks similares ao Respect: http://microphp.org/
***
***
Este artigo foi publicado originalmente na Revista iMasters. Acesse e leia todo o conteúdo.




