SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Contribuindo e criando software livre
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livreVitor Mattos
 
C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015Renato Groff
 
CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13William Colen
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universoelliando dias
 
Liberté, Licence, Communauté - Hack Thursday: CW 41
Liberté, Licence, Communauté - Hack Thursday: CW 41Liberté, Licence, Communauté - Hack Thursday: CW 41
Liberté, Licence, Communauté - Hack Thursday: CW 41Jerônimo Medina Madruga
 
C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015Renato Groff
 
Engenharia rever sa mentebinaria
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinariaPatrese Renan
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency managerVitor Mattos
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012Jorge Oleques
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 

Mais procurados (13)

Contribuindo e criando software livre
Contribuindo e criando software livreContribuindo e criando software livre
Contribuindo e criando software livre
 
C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015
 
CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Python 3k
Python 3kPython 3k
Python 3k
 
Python para Programadores
Python para ProgramadoresPython para Programadores
Python para Programadores
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universo
 
Liberté, Licence, Communauté - Hack Thursday: CW 41
Liberté, Licence, Communauté - Hack Thursday: CW 41Liberté, Licence, Communauté - Hack Thursday: CW 41
Liberté, Licence, Communauté - Hack Thursday: CW 41
 
C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015
 
Engenharia rever sa mentebinaria
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinaria
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency manager
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 

Semelhante a A importância dos padrões na comunidade PHP

A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosEvaldo Junior
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019Cassio Santos
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPiMasters
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Marcos Paulo
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para phpFabio B. Silva
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux DayFábio Albuquerque
 
Impacto dos frameworks PHP
Impacto dos frameworks PHPImpacto dos frameworks PHP
Impacto dos frameworks PHPThiago Rodrigues
 
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookFacebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookRafael Alves
 
Crescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeCrescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeFelipe Nascimento
 

Semelhante a A importância dos padrões na comunidade PHP (20)

A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In Santos
 
Evolucao php2
Evolucao php2Evolucao php2
Evolucao php2
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Pho Aula 02
Pho Aula 02Pho Aula 02
Pho Aula 02
 
Introdução a Frameworks
Introdução a FrameworksIntrodução a Frameworks
Introdução a Frameworks
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para php
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux Day
 
Impacto dos frameworks PHP
Impacto dos frameworks PHPImpacto dos frameworks PHP
Impacto dos frameworks PHP
 
Desenvolvimento web e PHP
Desenvolvimento web e PHPDesenvolvimento web e PHP
Desenvolvimento web e PHP
 
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookFacebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
 
Crescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeCrescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidade
 

Último

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Último (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

A importância dos padrões na comunidade PHP

  • 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 bibliotecas são interoperáveis... porque frameworks deveriam falhar?
  • 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
  • 10. PSR-1
  • 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
  • 17. perguntas? obrigado! klaussilveira@php.net klaussilveira.com github.com/klaussilveira