Conheça o Padrão PSR-0 do PHP

Neste post vamos abordar um assunto interessante: Padronização!
Padronização do que? Padronização de interoperabilidade de frameworks PHP.
Continue lendo e saiba como a comunidade PHP está se organizando para melhorar a utilização dos vários frameworks em conjunto.

Bom, como já era de se esperar com o passar do tempo as coisas iam ficar cada vez melhor após a chegada do PHP 5.3.x.

Agora a comunidade começou a se mexer para padronizar a interoperabilidade dos frameworks desenvolvidos em PHP.
Achei interessante a iniciativa e já estou me beneficiando dela.

Há um tempo atrás entrei em contato com Manuel Lemos do site PHP Classes reclamando justamente da falta de padronização da classes distribuídas no repositório criado por ele.

Na minha visão, assim como no Java, o PHP deveria ter um padrão de distribuição de código.

Por que isto? Simples! Porque o desenvolvedor saberia exatamente por onde começar ou terminar os estudos, análises e testes dos códigos baixados.

A reutilização de código é um dos grandes sucessos da comunidade OpenSource, mas como cada programador cria as coisas do seu jeito, acabamos por ter um monte de código muitas vezes inutilizáveis pela falta de organização e padronização.

Pensando nisto nasceu o FIG, que é uma abreviação do inglês para >Framework Interoperability Group, que significa Grupo de Interoperabilidade de Framework.

Este grupo é responsável por propor padronizações diversas para os frameworks PHP e por si aceitar as propostas na medida em que elas fizerem sentido e forem realmente úteis.

Já temos um padrão aceito chamado PSR-0, onde PSR é uma abreviação do inglês para Proposing a Standards Recommendation, que significa Propondo uma Recomendação Padrão e o número 0 é o número do padrão. Creio que PHP Standard Recommendation soaria melhor que Proposing a Standards Recommendation… mas não deixa de ser funcional mesmo assim.

PSR-0

Este padrão, o primeiro do grupo, define práticas e restrições que devem ser seguidas para a interoperabilidade de autoloaders em aplicações que utilizam frameworks.

Segue abaixo as observâncias do PSR-0:

  1. Um namespace totalmente qualificado e classe deve ter a seguinte estrutura: \\()*\.
    Vendor é o nome do framework. Ex.: Zend, Smarty, Doctrine
  2. Cada namespace deve ter um namespace de nível superior. Ex.: Vendor Name
  3. Cada namespace pode ter tantos sub-namespace quanto precisar
  4. Cada separador de namespace dentro do nome da classe é convertido para um DIRECTORY_SEPARATOR. O underscore (_) não tem significado especial no namespace
  5. O namespace totalmente qualificado ou classe é sufixado com .php quando carregado pelo sistema de arquivos
  6. Caracteres alfabéticos nos nomes dos

Zend Framework 2

E para NOOOOOSSA alegria o ZF2 já implementa este padrão.
Quando criamos um projeto e executamos o Composer, no arquivo de configuração composer.json há uma definição para a criação de autoloaders que informa ao mesmo quem deverá fazer o auto carregamento:


#composer.json
    "autoload": {
        "psr-0": {
            "Application": "module/Application/src"
        }
    }

Somente citei isto para mostrar que o ZF2 já está se adaptando aos mais recentes padrões e tendências PHP e está fora do escopo deste post explicar o funcionamento do autoload gerado pelo Composer e seu impacto na estrutura de arquivos do ZF2.

Bom, é isso aí!
Abraço do Giba!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *