O documento discute os padrões da comunidade PHP, incluindo o PSR-0 para autoloaders, o PSR-1 para interoperabilidade técnica e o PSR-2 para estilo de codificação. Também descreve o PHP-FIG, um grupo que discute padrões para facilitar a interoperabilidade entre frameworks e bibliotecas PHP.
3. Evolução... da comunidade
· TDD, TAD
· Controle de qualidade (phpmd, codesniffer, cpd)
· Bibliotecas desacopladas
· Gerenciamento de dependências (composer!)
5. PSR-0
· Regras para nomear namespaces e classes
· Regras para estrutura de pastas
· Autoloader genérico
Commit da versão final em 4 de Novembro de 2010 pelo
Matthew O'Phinney. Um longo caminho até o que temos
hoje, trilhado inicialmente pelos projetos Zend Framework,
Symfony e Doctrine.
(brejas pro @fabpot, @weierophinney e
@guilhermeblanco!)
6. PHP-FIG (PHP Framework Interoperability Group)
· Grupo de desenvolvedores de bibliotecas de
peso e frameworks, que discutem um único
objetivo: encontrar maneira de trabalhar juntos
· Surgiu em uma reunião na php|tek 2009
· Inicialmente um grupo fechado, hoje é aberto
para discussão, tendo representantes de
projetos importantes como membros votantes
· Qualquer um pode enviar uma proposta
7. Direito ao voto
· Para ter direito a voto, você precisa ser
representante de um projeto significativo da
comunidade.
· Você também precisa ser apoiado pelos
membros votantes atuais;
8. Membros votantes
· O grupo conta com representantes dos
seguintes projetos:
Lithium, phpBB, PEAR, Doctrine, Composer, Packagist,
Zikula, PPI, Propel, Joomla, Drupal, Solar Framework, Aura
Project, FLOW3, CakePHP, SabreDAV, Amazon Web Services
SDK, Symfony2, eZ Publish, Chisimba, C4, PyroCMS, Assetic,
Buzz, Zend Framework 2 e Agavi.
· Estes representantes votam em propostas de
padrões e propostas de novos membros
11. PSR-1: porque?
· Coding standards são essenciais em qualquer
projeto onde há mais de 2 programadores
· Programadores sempre acham seu estilo
melhor. Se não podemos ficar todos felizes,
vamos ficar todos tristes!
· Se existe uma interoperabilidade técnica, nada
mais natural que considerar coding standards
uma questão crucial para interoperabilidade
12. PSR-1: um resumo
· Muitos meses de discussão, no GitHub e na lista
· Pesquisa sobre cada regra do padrão, feita em
cima dos projetos participantes
· Muito buzz, muita gente pegando o bonde
andando...
· Proposta inicial rejeitada
13. PSR-1 e PSR-2
· Proposta inicial separada em duas
· A PSR-1 especifica regras para
interoperabilidade técnica entre projetos
durante a escrita de código
· A PSR-2 especifica regras de estilo, não-
essenciais
· Um projeto pode adotar a PSR-0 e PSR-1, mas
preferir não optar pela PSR-2
14. PSR-1: as regras
· Arquivos devem usar apenas as tags<?php e <?=
· Arquivos devem usar UTF-8 sem BOM (byte order mark, )
· Arquivos devem declarar classes, funções, constantes, etc. OU
causar efeitos colaterais (gerar saída, incluir um arquivo, alterar o
php.ini). NUNCA os dois.
· Namespaces e classes devem seguir a PSR-0
· Nomes de Classes devem estar em StudlyCaps
· Constantes de classe devem ser declaradas com letras
maiúsculas e, caso existam separadores, com underline
· Nomes de métodos devem estar em camelCase
16. Futuro
· Interfaces comuns para operações comuns
(cache, http)
· Difusão dos padrões
· Esperar viver em um mundo onde
desenvolvedores PHP parem de usar
Dreamweaver e mysql_connect