SlideShare uma empresa Scribd logo
Be Free. KDE
PHPInternals com
PHPUnit
#PHPConference-2016
@marcosptf
2/49 Be Free. KDE
About me
@marcosptf
pytero
phpzero
javero
3/49 Be Free. KDE
o que é open source?
Distribuição livre
A licença não deve restringir de nenhuma maneira a venda ou distribuição do
programa gratuitamente, como componente de outro programa ou não.
Código fonte
O programa deve incluir seu código fonte e deve permitir a sua distribuição.
Integridade do autor do código fonte
A licença deve explicitamente permitir a distribuição do programa construído a
partir do código fonte modificado.
Be Free. KDE
Exemplos de projetos
5/49 Be Free. KDE
porque contribuir?
Aprender mais
Conhecer melhor o projeto
Network
Carreira
Então...., porque não contribuir?
6/49 Be Free. KDE
O PHP precisa de você!!!
7/49 Be Free. KDE
Vamos contribuir?
8/49 Be Free. KDE
php - contribuindo
php-doc
Framework Tests
Bugs reporting
php-src internals
phpunit
php hacker guide
9/49 Be Free. KDE
php-doc
http://doc.php.net/tutorial/structure.php
svn checkout
https://svn.php.net/repository/phpdoc/modules/
doc-{LANG} phpdoc
->corrigir documentação
->criar documentação
->traduzir para o portugues
10
/49
Be Free. KDE
php-doc - Files Structure
/phpdoc/{LANG}/reference/extension_name/
book.xml - acts as the container for the
extension and contains the preface. Other files
(like examples.xml) are included from here.
setup.xml - includes setup, install and
configuration documentation
constants.xml - lists all constants that the
extension declared.
11
/49
Be Free. KDE
php-doc - Files Structure
configure.xml - usually this information is in
setup.xml, but if the file exists it is magically
included into setup.xml
examples.xml - various examples
foo.xml - example, foo can be anything specific
to a topic. Just be sure to include via book.xml.
12
/49
Be Free. KDE
php-doc - Files Structure
reference.xml - container for the functions,
rarely contains any info
functions/ - folder with one XML file per function
that the extension declares
classname.xml - container for the methods
defined by the class, contains also basic info
about it
classname/ - folder with one XML per method
that the class declares.
13
/49
Be Free. KDE
php-doc - Files Structure
{LANG}/language-defs.ent - contains local
entities used by this language. Some common
ones are the main part titles, but you should
also put entities used only by this language's
files here.
{LANG}/language-snippets.ent - longer often
used XML snippets translated to this language.
Including common warnings, notes, etc.
14
/49
Be Free. KDE
Framework Tests
./configure
make
make install
make test
Thanks :-)
15
/49
Be Free. KDE
bugs.php.net
16
/49
Be Free. KDE
bugs.php.net
17
/49
Be Free. KDE
bugs.php.net
18
/49
Be Free. KDE
bugs.php.net
19
/49
Be Free. KDE
gcov.php.net
20
/49
Be Free. KDE
php x ruby x rust
21
/49
Be Free. KDE
como funciona php-src?
Por favor acessem:
https://github.com/php/php-src
22
/49
Be Free. KDE
como funciona php-src?
23
/49
Be Free. KDE
como funciona php-src?
24
/49
Be Free. KDE
como funciona php-src?
TSRM - Thread Safe Resource Manager
É uma API onde as extensões devem interagir para que possam atender
requisições em paralelo sem restrições ou interferencias.
ex:
mysqli
curl
enchant
exif
pdo
25
/49
Be Free. KDE
como funciona php-src?
ZEND - Zend Memory Manager
Este é o gerenciador de memoria onde tenta reduzir o uso de alocação e
sobrecarga.
Quando habilitado, permite selecionar entre "malloc" e "emalloc" em tempo de
execução e permite ultilizar a memoria interna e externa e depuradores sem
recompilação.
26
/49
Be Free. KDE
como funciona php-src?
build - instalação e compilação
Neste diretorio ficam os scripts ultilizados quando é realizado algum comando de instalação
ou compilação como:
./configure
make
make install
27
/49
Be Free. KDE
como funciona php-src?
ext - extensões
Neste diretorio ficam as extenções que fazem parte do core php
diretorio onde ficam as extenções:
github/php-src/ext/
diretorio onde fica o codigo fonte das extenções:
github/php-src/ext/<nome-da-extenção>/
diretorio onde ficam os testes de integração
github/php-src/ext/<nome-da-extenção>/testes/
28
/49
Be Free. KDE
como funciona php-src?
main - funcionalidades principais
Neste diretorio ficam as validações e funcionalidades principais do php
aqui por exemplo, ele verifica se a variavel criada em php, realmente é valida:
github/php-src/main/php_variables.c#L56
diretorio onde fica o codigo fonte da conexao php com redes via socket
github/php-src/main/network.c
29
/49
Be Free. KDE
como funciona php-src?
netware - novell
Itens para manter compartibilidade com os componentes da novell.
30
/49
Be Free. KDE
como funciona php-src?
pear - php extension and application
repository
Itens para manter compartibilidade com as extenções do pear.
31
/49
Be Free. KDE
como funciona php-src?
sapi - Server API
É o mecanismo que controla a interação entre o "mundo exterior" e o mecanismo
PHP/Zend.
O SAPI é um aplicativo interface de programação (API)
fornecido pelo servidor web para ajudar outros desenvolvedores em estender o web server
recursos.
O PHP tem uma interface direta do módulo chamada SAPI para servidores web diferentes.
No caso de PHP 5 e Apache 2.0 no Windows, ele é fornecido na forma de um arquivo DLL
chamado php5apache2.dll.
Existem diferentes tipos de SAPIs para várias extensões de servidor web, como por
exemplo, outro dois SAPIs para a linguagem PHP são Common Gateway Interface (CGI) e
interface de linha de comando (CLI).
32
/49
Be Free. KDE
como funciona php-src?
scripts - config
são scripts de configuração para o projeto.
33
/49
Be Free. KDE
como funciona php-src?
tests
onde ficam alguns testes relacionados ao core do php
github/php-src/tests
lembrando que os testes de extensões ficam aqui:
github/php-src/ext/<nome-da-extenção>/testes/
34
/49
Be Free. KDE
como funciona php-src?
travis - ci
35
/49
Be Free. KDE
como funciona php-src?
win32 - scripts e configurações para
ambientes microsoft.
36
/49
Be Free. KDE
PHPUnit *.phpt
Os arquivos escritos em .phpt são usados
para fazer testes de integração
-Testes de Integração:
É a Fase que os modulos são testados em
grupo.
- Testes de Unitarios:
Os Modulos são testados individualmente
37
/49
Be Free. KDE
PHPUnit *.phpt
38
/49
Be Free. KDE
PHPUnit *.phpt
39
/49
Be Free. KDE
PHPUnit *.phpt
Vamos quebrar em partes, como funciona
as principais tags PHPUnit para .phpt
40
/49
Be Free. KDE
PHPUnit *.phpt
41
/49
Be Free. KDE
PHPUnit *.phpt
42
/49
Be Free. KDE
PHPUnit *.phpt
43
/49
Be Free. KDE
PHPUnit *.phpt
44
/49
Be Free. KDE
PHPCore Hacker
PHP at the Core: A Hacker's Guide
http://php.net/manual/en/internals2.php
45
/49
Be Free. KDE
Sara Golemon
@sgolemon
46
/49
Be Free. KDE
Vamos contribuir?
47
/49
Be Free. KDE
O PHP precisa de você!!!
48
/49
Be Free. KDE
About me
@marcosptf
pytero
phpzero
javero
49
/49
Be Free. KDE
!!!Obrigado!!!
duvidas?

Mais conteúdo relacionado

Mais procurados

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
Evaldo Junior
 
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
Evaldo Junior
 
PHP: Evolução
PHP: EvoluçãoPHP: Evolução
PHP: Evolução
Er Galvão Abbott
 
Integração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarIntegração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usar
Thiago Paes
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
Ruben Marcus Luz Paschoarelli
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Jonathan Prates
 
Fat binaries
Fat binariesFat binaries
Fat binaries
Felipe Pedroso
 
Introdução a golang
Introdução a golangIntrodução a golang
Introdução a golang
Leandro Lugaresi
 
Desenvolvimento multiplataforma
Desenvolvimento multiplataformaDesenvolvimento multiplataforma
Desenvolvimento multiplataformastonefull
 
Palestra BrOffice.org
Palestra BrOffice.orgPalestra BrOffice.org
Palestra BrOffice.org
Fábio Emilio Costa
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
tdc-globalcode
 
Composer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - SeasonComposer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - Season
Rogerio Prado de Jesus
 
Conhecendo Go
Conhecendo GoConhecendo Go
Conhecendo Go
Hiarison Gigante
 
Engenharia rever sa mentebinaria
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinaria
Patrese Renan
 
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Rogerio Prado de Jesus
 
Gerenciamento de dependências em PHP com o Composer
Gerenciamento de dependências em PHP com o ComposerGerenciamento de dependências em PHP com o Composer
Gerenciamento de dependências em PHP com o Composer
Andre Cardoso
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
Thiago Barradas
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
tdc-globalcode
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
Leandro Parazito
 
NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até Pensamento
Osvaldo Santana Neto
 

Mais procurados (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
 
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
 
PHP: Evolução
PHP: EvoluçãoPHP: Evolução
PHP: Evolução
 
Integração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarIntegração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usar
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
 
Fat binaries
Fat binariesFat binaries
Fat binaries
 
Introdução a golang
Introdução a golangIntrodução a golang
Introdução a golang
 
Desenvolvimento multiplataforma
Desenvolvimento multiplataformaDesenvolvimento multiplataforma
Desenvolvimento multiplataforma
 
Palestra BrOffice.org
Palestra BrOffice.orgPalestra BrOffice.org
Palestra BrOffice.org
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
 
Composer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - SeasonComposer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - Season
 
Conhecendo Go
Conhecendo GoConhecendo Go
Conhecendo Go
 
Engenharia rever sa mentebinaria
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinaria
 
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
 
Gerenciamento de dependências em PHP com o Composer
Gerenciamento de dependências em PHP com o ComposerGerenciamento de dependências em PHP com o Composer
Gerenciamento de dependências em PHP com o Composer
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 
NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até Pensamento
 

Destaque

Operational Visibility at Global Scale
Operational Visibility at Global ScaleOperational Visibility at Global Scale
Operational Visibility at Global Scale
Sangeeta Narayanan
 
Queues queues queues — How RabbitMQ enables reactive architectures
Queues queues queues — How RabbitMQ enables reactive architecturesQueues queues queues — How RabbitMQ enables reactive architectures
Queues queues queues — How RabbitMQ enables reactive architectures
Martin Tajur
 
Introduction to Deep Learning
Introduction to Deep LearningIntroduction to Deep Learning
Introduction to Deep Learning
Oleg Mygryn
 
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
Alexandre Brandão Lustosa
 
[2016 체인지온] 부산지역 청년잡지 지잡_김영욱
[2016 체인지온] 부산지역 청년잡지 지잡_김영욱[2016 체인지온] 부산지역 청년잡지 지잡_김영욱
[2016 체인지온] 부산지역 청년잡지 지잡_김영욱
daumfoundation
 
Apache Spark with Scala
Apache Spark with ScalaApache Spark with Scala
Apache Spark with Scala
Fernando Rodriguez
 
Bandar anda dan agenda tempatan 21
Bandar anda dan agenda tempatan 21Bandar anda dan agenda tempatan 21
Bandar anda dan agenda tempatan 21
NURUL JANNAH
 
Agenda Tempatan 21 Bandar Sepang
Agenda Tempatan 21 Bandar Sepang Agenda Tempatan 21 Bandar Sepang
Agenda Tempatan 21 Bandar Sepang
AINEEN NABIELA
 
Intro to open source telemetry linux con 2016
Intro to open source telemetry   linux con 2016Intro to open source telemetry   linux con 2016
Intro to open source telemetry linux con 2016
Matthew Broberg
 
인공지능 딥러닝 (Etri) 20160811 short deck
인공지능 딥러닝 (Etri) 20160811 short deck인공지능 딥러닝 (Etri) 20160811 short deck
인공지능 딥러닝 (Etri) 20160811 short deck
aidentify
 
淡泊人生
淡泊人生淡泊人生
淡泊人生lys167
 
社群大數據年度爆紅排行榜
社群大數據年度爆紅排行榜社群大數據年度爆紅排行榜
社群大數據年度爆紅排行榜
Vista Cheng
 
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
nocchi_airport
 
The AI Era Ignited by GPU Deep Learning
The AI Era Ignited by GPU Deep Learning The AI Era Ignited by GPU Deep Learning
The AI Era Ignited by GPU Deep Learning
NVIDIA
 
How to Hook Customers with Habit-forming Products
How to Hook Customers with Habit-forming ProductsHow to Hook Customers with Habit-forming Products
How to Hook Customers with Habit-forming Products
Wrike
 
GTC 2016 Opening Keynote
GTC 2016 Opening KeynoteGTC 2016 Opening Keynote
GTC 2016 Opening Keynote
NVIDIA
 
The #Hiring Manifesto
The #Hiring ManifestoThe #Hiring Manifesto
The #Hiring Manifesto
Arbunize
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
Hiroshi Shimizu
 

Destaque (18)

Operational Visibility at Global Scale
Operational Visibility at Global ScaleOperational Visibility at Global Scale
Operational Visibility at Global Scale
 
Queues queues queues — How RabbitMQ enables reactive architectures
Queues queues queues — How RabbitMQ enables reactive architecturesQueues queues queues — How RabbitMQ enables reactive architectures
Queues queues queues — How RabbitMQ enables reactive architectures
 
Introduction to Deep Learning
Introduction to Deep LearningIntroduction to Deep Learning
Introduction to Deep Learning
 
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016
 
[2016 체인지온] 부산지역 청년잡지 지잡_김영욱
[2016 체인지온] 부산지역 청년잡지 지잡_김영욱[2016 체인지온] 부산지역 청년잡지 지잡_김영욱
[2016 체인지온] 부산지역 청년잡지 지잡_김영욱
 
Apache Spark with Scala
Apache Spark with ScalaApache Spark with Scala
Apache Spark with Scala
 
Bandar anda dan agenda tempatan 21
Bandar anda dan agenda tempatan 21Bandar anda dan agenda tempatan 21
Bandar anda dan agenda tempatan 21
 
Agenda Tempatan 21 Bandar Sepang
Agenda Tempatan 21 Bandar Sepang Agenda Tempatan 21 Bandar Sepang
Agenda Tempatan 21 Bandar Sepang
 
Intro to open source telemetry linux con 2016
Intro to open source telemetry   linux con 2016Intro to open source telemetry   linux con 2016
Intro to open source telemetry linux con 2016
 
인공지능 딥러닝 (Etri) 20160811 short deck
인공지능 딥러닝 (Etri) 20160811 short deck인공지능 딥러닝 (Etri) 20160811 short deck
인공지능 딥러닝 (Etri) 20160811 short deck
 
淡泊人生
淡泊人生淡泊人生
淡泊人生
 
社群大數據年度爆紅排行榜
社群大數據年度爆紅排行榜社群大數據年度爆紅排行榜
社群大數據年度爆紅排行榜
 
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
 
The AI Era Ignited by GPU Deep Learning
The AI Era Ignited by GPU Deep Learning The AI Era Ignited by GPU Deep Learning
The AI Era Ignited by GPU Deep Learning
 
How to Hook Customers with Habit-forming Products
How to Hook Customers with Habit-forming ProductsHow to Hook Customers with Habit-forming Products
How to Hook Customers with Habit-forming Products
 
GTC 2016 Opening Keynote
GTC 2016 Opening KeynoteGTC 2016 Opening Keynote
GTC 2016 Opening Keynote
 
The #Hiring Manifesto
The #Hiring ManifestoThe #Hiring Manifesto
The #Hiring Manifesto
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 

Semelhante a Como contribuir-com-open-source-php conference-2016

Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
Adler Medrado
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
Norivan Oliveira
 
WP Composer
WP ComposerWP Composer
WP Composer
Eduardo Pittol
 
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
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livreelliando dias
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao phpAdriano Castro
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7
Silvano Oliveira
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
Joaquim Vieira
 
TDC2016SP - Flask para Web
TDC2016SP - Flask para WebTDC2016SP - Flask para Web
TDC2016SP - Flask para Web
tdc-globalcode
 
Artigo de php
Artigo de phpArtigo de php
Artigo de php
robson
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNG
iMasters
 
Pho Aula 02
Pho Aula 02Pho Aula 02
Pho Aula 02
GameFlixBR
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
Daniel Brandão
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Thiago Rodrigues
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil Competente
Michael Cardoso
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell ScriptReinaldo Lima
 

Semelhante a Como contribuir-com-open-source-php conference-2016 (20)

Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
WP Composer
WP ComposerWP Composer
WP Composer
 
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
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livre
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
 
PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7PW01 - Introdução a programação em PHPv7
PW01 - Introdução a programação em PHPv7
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
TDC2016SP - Flask para Web
TDC2016SP - Flask para WebTDC2016SP - Flask para Web
TDC2016SP - Flask para Web
 
Artigo de php
Artigo de phpArtigo de php
Artigo de php
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNG
 
Guia php
Guia phpGuia php
Guia php
 
Pho Aula 02
Pho Aula 02Pho Aula 02
Pho Aula 02
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Php apostila - vol 02
Php   apostila - vol 02Php   apostila - vol 02
Php apostila - vol 02
 
Revista On-line
Revista On-lineRevista On-line
Revista On-line
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil Competente
 
Asp
AspAsp
Asp
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
 

Como contribuir-com-open-source-php conference-2016

  • 1. Be Free. KDE PHPInternals com PHPUnit #PHPConference-2016 @marcosptf
  • 2. 2/49 Be Free. KDE About me @marcosptf pytero phpzero javero
  • 3. 3/49 Be Free. KDE o que é open source? Distribuição livre A licença não deve restringir de nenhuma maneira a venda ou distribuição do programa gratuitamente, como componente de outro programa ou não. Código fonte O programa deve incluir seu código fonte e deve permitir a sua distribuição. Integridade do autor do código fonte A licença deve explicitamente permitir a distribuição do programa construído a partir do código fonte modificado.
  • 4. Be Free. KDE Exemplos de projetos
  • 5. 5/49 Be Free. KDE porque contribuir? Aprender mais Conhecer melhor o projeto Network Carreira Então...., porque não contribuir?
  • 6. 6/49 Be Free. KDE O PHP precisa de você!!!
  • 7. 7/49 Be Free. KDE Vamos contribuir?
  • 8. 8/49 Be Free. KDE php - contribuindo php-doc Framework Tests Bugs reporting php-src internals phpunit php hacker guide
  • 9. 9/49 Be Free. KDE php-doc http://doc.php.net/tutorial/structure.php svn checkout https://svn.php.net/repository/phpdoc/modules/ doc-{LANG} phpdoc ->corrigir documentação ->criar documentação ->traduzir para o portugues
  • 10. 10 /49 Be Free. KDE php-doc - Files Structure /phpdoc/{LANG}/reference/extension_name/ book.xml - acts as the container for the extension and contains the preface. Other files (like examples.xml) are included from here. setup.xml - includes setup, install and configuration documentation constants.xml - lists all constants that the extension declared.
  • 11. 11 /49 Be Free. KDE php-doc - Files Structure configure.xml - usually this information is in setup.xml, but if the file exists it is magically included into setup.xml examples.xml - various examples foo.xml - example, foo can be anything specific to a topic. Just be sure to include via book.xml.
  • 12. 12 /49 Be Free. KDE php-doc - Files Structure reference.xml - container for the functions, rarely contains any info functions/ - folder with one XML file per function that the extension declares classname.xml - container for the methods defined by the class, contains also basic info about it classname/ - folder with one XML per method that the class declares.
  • 13. 13 /49 Be Free. KDE php-doc - Files Structure {LANG}/language-defs.ent - contains local entities used by this language. Some common ones are the main part titles, but you should also put entities used only by this language's files here. {LANG}/language-snippets.ent - longer often used XML snippets translated to this language. Including common warnings, notes, etc.
  • 14. 14 /49 Be Free. KDE Framework Tests ./configure make make install make test Thanks :-)
  • 20. 20 /49 Be Free. KDE php x ruby x rust
  • 21. 21 /49 Be Free. KDE como funciona php-src? Por favor acessem: https://github.com/php/php-src
  • 22. 22 /49 Be Free. KDE como funciona php-src?
  • 23. 23 /49 Be Free. KDE como funciona php-src?
  • 24. 24 /49 Be Free. KDE como funciona php-src? TSRM - Thread Safe Resource Manager É uma API onde as extensões devem interagir para que possam atender requisições em paralelo sem restrições ou interferencias. ex: mysqli curl enchant exif pdo
  • 25. 25 /49 Be Free. KDE como funciona php-src? ZEND - Zend Memory Manager Este é o gerenciador de memoria onde tenta reduzir o uso de alocação e sobrecarga. Quando habilitado, permite selecionar entre "malloc" e "emalloc" em tempo de execução e permite ultilizar a memoria interna e externa e depuradores sem recompilação.
  • 26. 26 /49 Be Free. KDE como funciona php-src? build - instalação e compilação Neste diretorio ficam os scripts ultilizados quando é realizado algum comando de instalação ou compilação como: ./configure make make install
  • 27. 27 /49 Be Free. KDE como funciona php-src? ext - extensões Neste diretorio ficam as extenções que fazem parte do core php diretorio onde ficam as extenções: github/php-src/ext/ diretorio onde fica o codigo fonte das extenções: github/php-src/ext/<nome-da-extenção>/ diretorio onde ficam os testes de integração github/php-src/ext/<nome-da-extenção>/testes/
  • 28. 28 /49 Be Free. KDE como funciona php-src? main - funcionalidades principais Neste diretorio ficam as validações e funcionalidades principais do php aqui por exemplo, ele verifica se a variavel criada em php, realmente é valida: github/php-src/main/php_variables.c#L56 diretorio onde fica o codigo fonte da conexao php com redes via socket github/php-src/main/network.c
  • 29. 29 /49 Be Free. KDE como funciona php-src? netware - novell Itens para manter compartibilidade com os componentes da novell.
  • 30. 30 /49 Be Free. KDE como funciona php-src? pear - php extension and application repository Itens para manter compartibilidade com as extenções do pear.
  • 31. 31 /49 Be Free. KDE como funciona php-src? sapi - Server API É o mecanismo que controla a interação entre o "mundo exterior" e o mecanismo PHP/Zend. O SAPI é um aplicativo interface de programação (API) fornecido pelo servidor web para ajudar outros desenvolvedores em estender o web server recursos. O PHP tem uma interface direta do módulo chamada SAPI para servidores web diferentes. No caso de PHP 5 e Apache 2.0 no Windows, ele é fornecido na forma de um arquivo DLL chamado php5apache2.dll. Existem diferentes tipos de SAPIs para várias extensões de servidor web, como por exemplo, outro dois SAPIs para a linguagem PHP são Common Gateway Interface (CGI) e interface de linha de comando (CLI).
  • 32. 32 /49 Be Free. KDE como funciona php-src? scripts - config são scripts de configuração para o projeto.
  • 33. 33 /49 Be Free. KDE como funciona php-src? tests onde ficam alguns testes relacionados ao core do php github/php-src/tests lembrando que os testes de extensões ficam aqui: github/php-src/ext/<nome-da-extenção>/testes/
  • 34. 34 /49 Be Free. KDE como funciona php-src? travis - ci
  • 35. 35 /49 Be Free. KDE como funciona php-src? win32 - scripts e configurações para ambientes microsoft.
  • 36. 36 /49 Be Free. KDE PHPUnit *.phpt Os arquivos escritos em .phpt são usados para fazer testes de integração -Testes de Integração: É a Fase que os modulos são testados em grupo. - Testes de Unitarios: Os Modulos são testados individualmente
  • 39. 39 /49 Be Free. KDE PHPUnit *.phpt Vamos quebrar em partes, como funciona as principais tags PHPUnit para .phpt
  • 44. 44 /49 Be Free. KDE PHPCore Hacker PHP at the Core: A Hacker's Guide http://php.net/manual/en/internals2.php
  • 45. 45 /49 Be Free. KDE Sara Golemon @sgolemon
  • 47. 47 /49 Be Free. KDE O PHP precisa de você!!!
  • 48. 48 /49 Be Free. KDE About me @marcosptf pytero phpzero javero