padrões
na comunidade php
klaus silveira
    desenvolvedor
       & instrutor
Evolução... da comunidade

· TDD, TAD

· Controle de qualidade   (phpmd, codesniffer, cpd)


· Bibliotecas desacopladas

· Gerenciamento de dependências (composer!)
Interoperabilidade

· Se bibliotecas são interoperáveis... porque
frameworks deveriam falhar?
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!)
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
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;
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
PSR-1
PSR-1
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
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
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
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
PSR-2: as regras
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
perguntas?




     obrigado!
klaussilveira@php.net
        klaussilveira.com
 github.com/klaussilveira

A importância dos padrões na comunidade PHP

  • 1.
  • 2.
    klaus silveira desenvolvedor & instrutor
  • 3.
    Evolução... da comunidade ·TDD, TAD · Controle de qualidade (phpmd, codesniffer, cpd) · Bibliotecas desacopladas · Gerenciamento de dependências (composer!)
  • 4.
    Interoperabilidade · Se bibliotecassão interoperáveis... porque frameworks deveriam falhar?
  • 5.
    PSR-0 · Regras paranomear 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 FrameworkInteroperability 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 · Ogrupo 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
  • 9.
  • 10.
  • 11.
    PSR-1: porque? · Codingstandards 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
  • 15.
  • 16.
    Futuro · Interfaces comunspara 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
  • 17.
    perguntas? obrigado! klaussilveira@php.net klaussilveira.com github.com/klaussilveira