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.