Padrões de desenvolvimento em PHP com PSRs

Quando estamos desenvolvendo nosso código PHP, ninguém nos define regras de como fazê-lo. Podemos fazer como quisermos e é bom que tenhamos essa liberdade. Mas, na medida que nosso sistema cresce e começamos a implementa-lo em vários lugares surge a necessidade de seguir algum padrão para que quem vá implementar tenha entendimento do que esta acontecendo.

Além disso, se decidirmos usar algum framework (algo bem provável em projetos maiores) como o Laravel, precisamos seguir alguns padrões de desenvolvimento para que ele consiga realizar algumas funcionalidades como, por exemplo, o autoload!

Uma possível solução para a implementação é desenvolver minusciosamente nossa documentação para que fique claro tudo que acontece no projeto. Mas, para o caso dos frameworks não há saida. Precisamos entender o que é uma PSR, seja lá qual esteja sendo utilizada.

Porém, PSRs não servem apenas para utilizar frameworks! PSR (PHP Standards Recommendation) é uma recomendação de como desenvolver nosso código de forma padrão e limpa. Muitos frameworks, aplicações e pacotes estão adotando pois permite facilmente a interoperabilidade e qualquer desenvolvedor PHP pode adotar. Ou seja, com PSRs conseguimos nos comunicar de forma transparente como desenvolvedores.

Atualmente existem 12 PSRs desenvolvidas/em desenvolvimento pela PHP-FIG (Framework Interoperability Group). Das doze, sete estão em desenvolvimento e cinco já foram aceitas. As PSRs aceitas são:

- Basic Coding Standard (Padrão de codificação básica) — Aborda os elementos que devem ser considerados para garantir um código de de alta interoperabilidade.
- Coding Style Guide (Guia de estilo de codificação) — Aborda como deve ser feita a formatação para facilitar a leitura do código por outros desenvolvedores.
- Logger Interface (Interface de Logger) — Descreve uma interface comum para bibliotecas de Log.
- Autoloading Standard (Padrão de auto-carregamento) — Descreve uma especificação para auto-carregamento de classes pelo diretório do arquivo. Também diz onde colocar arquivos que serão auto-carregados de acordo com a especificação.
- Caching Interface (Interface de Cache) — Descreve uma interace padrão para desenvolver sistemas de Cache.
- HTTP Message Interface (Interface de Mensagem HTTP) — Descreve uma interface padrão para desenvolvimento de mensagens HTTP .

Uma definição mais aprofundada de cada PSR, além das PSRs em desenvolvimento, está disponível no site da php-fig (disponível em inglês): http://www.php-fig.org/psr/

Com PSRs evitamos a necessidade de nos preocupar com certas peculiaridades de cada sistema! Se um sistema segue uma PSR, ou todas, já saberemos como manipulá-lo da forma correta.

E a mesma coisa serve para os sistemas que nós desenvolvemos. Se seguirmos as PSRs, quem for implementar nosso sistema saberá exatamente como fazê-lo da forma correta, reservando a documentação para coisas mais específicas.

É evidente que ninguém é obrigado a seguir as PSRs, ou qualquer outra especificação, ao desenvolver em PHP. É uma escolha livre do desenvolvedor, mas é necessário que, pelo menos, conheçamos bem. Afinal, a tendência é que cada vez mais projetos/frameworks sigam e, por consequência, o mercado também.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.