SlideShare une entreprise Scribd logo
1  sur  136
Télécharger pour lire hors ligne
Orientação a Objetos em PHP




                                              augusto@phpsp.org.br

                                                   @augustohp

Thursday, January 28, 2010
AUGUSTO PASCUTTI


   •4    anos de experiência

   • ZCE

   • Fundador/coordenador      PHPSP

   • Habari, CakePHP




Thursday, January 28, 2010
OBJETIVOS


Thursday, January 28, 2010
ORIENTAR


Thursday, January 28, 2010
PHP 5


Thursday, January 28, 2010
USAR


Thursday, January 28, 2010
ORIENTANDO-SE




Thursday, January 28, 2010
PROGRAMA PROCEDURAL ?




Thursday, January 28, 2010
ESQUEÇA !




Thursday, January 28, 2010
PENSE DIFERENTE




Thursday, January 28, 2010
PENSE OO




Thursday, January 28, 2010
CLASSES



Thursday, January 28, 2010
BASE DA OO



Thursday, January 28, 2010
MOLDES



Thursday, January 28, 2010
INSTRUÇÕES



Thursday, January 28, 2010
SEM VONTADE PRÓPRIA



Thursday, January 28, 2010
CLASSES



Thursday, January 28, 2010
CLASSES



Thursday, January 28, 2010
CLASSES



Thursday, January 28, 2010
CLASSES



Thursday, January 28, 2010
• Uma classe por arquivo

                  • Padrões de nomenclatura

                         • Padrão_Zend_ou_Pear
                                                 CLASSES
                         • PadrãoCamelCase

                         • PaDrÃoMiGuXo


Thursday, January 28, 2010
OBJETOS
Thursday, January 28, 2010
FILHOS DAS CLASSES




Thursday, January 28, 2010
INFORMAÇÕES




Thursday, January 28, 2010
INDEPENDENTES




Thursday, January 28, 2010
EXECUTORES




Thursday, January 28, 2010
EXECUTAM




Thursday, January 28, 2010
ATRIBUTOS
Thursday, January 28, 2010
DECLARADOS NA CLASSE
Thursday, January 28, 2010
USADOS NOS OBJETOS
Thursday, January 28, 2010
PROPRIEDADES
Thursday, January 28, 2010
INFORMAÇÕES
Thursday, January 28, 2010
VARIÁVEIS
Thursday, January 28, 2010
4
Thursday, January 28, 2010
VARIÁVEIS
Thursday, January 28, 2010
5
Thursday, January 28, 2010
VARIÁVEIS
Thursday, January 28, 2010
MÉTODOS
Thursday, January 28, 2010
DECLARADOS NA CLASSE
Thursday, January 28, 2010
USADOS PELOS OBJETOS
Thursday, January 28, 2010
FUNÇÕES
Thursday, January 28, 2010
FAZEM COISAS
Thursday, January 28, 2010
DÃO E RECEBEM
Thursday, January 28, 2010
4
Thursday, January 28, 2010
DÃO E RECEBEM
Thursday, January 28, 2010
5
Thursday, January 28, 2010
DÃO E RECEBEM
Thursday, January 28, 2010
AUTOLOAD




Thursday, January 28, 2010
AUTOLOAD
           •Executado na instanciação
           •Executado somente para classes não declaradas
           •Nativo do PHP
           •Duas implementações
              •__autoload
              •SPL
           •Sem includes/requires
           •Melhora consumo de memória
Thursday, January 28, 2010
AUTOLOAD




Thursday, January 28, 2010
AUTOLOAD




Thursday, January 28, 2010
MEMBROS DA CLASSE
Thursday, January 28, 2010
CONSTANTES




Thursday, January 28, 2010
CONSTANTES




Thursday, January 28, 2010
ESTÁTICOS



Thursday, January 28, 2010
ESTÁTICOS



Thursday, January 28, 2010
ESTÁTICOS



Thursday, January 28, 2010
MENSAGENS
Thursday, January 28, 2010
PODER DA OO
Thursday, January 28, 2010
TROCA DE INFORMAÇÕES
Thursday, January 28, 2010
TROCA DE INFORMAÇÕES
Thursday, January 28, 2010
HERANÇA
Thursday, January 28, 2010
CLASSE PAI
Thursday, January 28, 2010
CLASSE FILHA
Thursday, January 28, 2010
VISIBILIDADE




Thursday, January 28, 2010
PUBLIC




Thursday, January 28, 2010
PROTECTED




Thursday, January 28, 2010
PRIVATE




Thursday, January 28, 2010
POLIMORFISMO
Thursday, January 28, 2010
ERA UMA COISA
Thursday, January 28, 2010
AGORA É OUTRA
Thursday, January 28, 2010
SOBRECARGA
Thursday, January 28, 2010
NA VERDADE: SOBRESCRITA
Thursday, January 28, 2010
NA VERDADE: SOBRESCRITA
Thursday, January 28, 2010
FINAL
Thursday, January 28, 2010
IMPEDE O POLIMORFISMO
Thursday, January 28, 2010
USADO EM CLASSES ...
Thursday, January 28, 2010
E MÉTODOS
Thursday, January 28, 2010
E MÉTODOS
Thursday, January 28, 2010
ABSTRATO
Thursday, January 28, 2010
NÃO PODE SER INSTANCIADA
Thursday, January 28, 2010
USADA COMO PAI
Thursday, January 28, 2010
USADA COMO PAI
Thursday, January 28, 2010
USADA COMO PAI
Thursday, January 28, 2010
MÁGICA
Thursday, January 28, 2010
MÉTODOS MÁGICOS
Thursday, January 28, 2010
EXECUTADOS PELO PHP
Thursday, January 28, 2010
14 EXISTENTES NO PHP 5.3
Thursday, January 28, 2010
SEMPRE COMEÇAM COM “_ _”
Thursday, January 28, 2010
CONSTRUINDO




Thursday, January 28, 2010
__CONSTRUCT


           •Executado na instanciação do objeto
           •Não pode retornar nada
           •Pode sofrer sobrecarga
           •Pode receber argumentos



Thursday, January 28, 2010
__CONSTRUCT




Thursday, January 28, 2010
DESTRUINDO
Thursday, January 28, 2010
•Executado quando objeto sai da memória
            •Final do script
            •unset() do objeto
           •Pode ser útil em
            •Banco de dados
            •Logs
            •etc ...


                                       __DESTRUCT
Thursday, January 28, 2010
__DESTRUCT
Thursday, January 28, 2010
MOSTRANDO




Thursday, January 28, 2010
__TOSTRING
       •Chamado quando objeto é usado como String
       •O método DEVE retornar uma String
       •Útil para objetos que devem retornar algo visual
        •Paginador, Botão
       •Até a versão 5.2 funcionava só com `print` e `echo`
       •> 5.2 funciona em qualquer contexto de string
        •TypeCast
        •sprintf()
Thursday, January 28, 2010
__TOSTRING




Thursday, January 28, 2010
OUTROS MÉTODOS MÁGICOS

            •__call
            •__get
            •__set
            •__get
            •__isset
            •__clone
            •http://php.net/manual/en/language.oop5.magic.php
Thursday, January 28, 2010
INTERFACES
Thursday, January 28, 2010
“CLASSES” GENÉRICAS
Thursday, January 28, 2010
DEFINEM COMPORTAMENTOS
Thursday, January 28, 2010
TIPOS DE DADOS
Thursday, January 28, 2010
TIPOS DE DADOS
Thursday, January 28, 2010
•Mais genéricos que Classes Abstratas

            •Uma classe pode implementar várias Interfaces


                             TIPOS DE DADOS
Thursday, January 28, 2010
EXCEPTIONS




Thursday, January 28, 2010
TRABALHANDO
Thursday, January 28, 2010
OBJETOS E REFERÊNCIAS
Thursday, January 28, 2010
OBJETOS E REFERÊNCIAS
Thursday, January 28, 2010
OBJETOS E REFERÊNCIAS
Thursday, January 28, 2010
OBJETOS E REFERÊNCIAS
Thursday, January 28, 2010
TYPE HINT
Thursday, January 28, 2010
•Forçam um tipo a um argumento
            •Só podem ser usados como tipo:
             •Array
             •Classes




                             TYPE HINT
Thursday, January 28, 2010
TYPE HINT
Thursday, January 28, 2010
TYPE HINT
Thursday, January 28, 2010
INSTANCE OF
Thursday, January 28, 2010
•Checa se um objeto é uma determinada instância
                •Retorna boolean
                •Um objeto pode ser checado contra
                  •Classe
                  •Classe Abstrata
                  •Interface


                             INSTANCE OF
Thursday, January 28, 2010
INSTANCE OF
Thursday, January 28, 2010
BANCO DE DADOS
Thursday, January 28, 2010
ABSTRAIA
Thursday, January 28, 2010
•Melhora segurança
                     •Centraliza execuções
                     •Melhor manutenção
                     •Evita dor de cabeças




                               ABSTRAIA
Thursday, January 28, 2010
NÃO REINVENTE A RODA
Thursday, January 28, 2010
USE A PDO
Thursday, January 28, 2010
•O que ela é:
              •Abstração de Acesso para banco de dados
              •Nativo do PHP 5.1
              •Aprenda uma sintaxe de conexão
              •Muito/Extremamente TESTADA pra caramba
              •Mais leve do que qualquer outra


                             USE A PDO
Thursday, January 28, 2010
•O que ela NÃO é:
                      •Não abstrai suas queries
                      •Não evita instalação de drivers dos bancos
                      •Não vai resolver seus problemas
                        •Nem de segurança
                        •Nem de performance


                              USE A PDO
Thursday, January 28, 2010
USANDO A PDO
Thursday, January 28, 2010
USANDO A PDO
Thursday, January 28, 2010
•Agilizam a execução de queries repetidas
                     •Implementam um pouco de segurança
                     •Simplificam o uso de queries repetidas
                     •Simplificam Fetch de resultados




                             PDO STATEMENTS
Thursday, January 28, 2010
PDO STATEMENTS
Thursday, January 28, 2010
PARÂMETROS
Thursday, January 28, 2010
RETORNO ID INSERIDO
Thursday, January 28, 2010
DESIGN PATTERNS
Thursday, January 28, 2010
•Solução comum para problemas comuns
                     •Independem de linguagem
                     •Vocuabulário comum
                     •Primeiros DP: Gang of Four




                             DESIGN PATTERNS
Thursday, January 28, 2010
•Singleton
                     •Factory
                     •Strategy
                     •Data Access Object
                     •Value Objects
                     •MVC


                             DESIGN PATTERNS
Thursday, January 28, 2010
FRAMEWORKS
Thursday, January 28, 2010
Augusto Pascutti
                                               augusto@phpsp.org.br
                                                       @augustohp
                             http://www.slideshare.net/augustopascutti

                                            PERGUNTAS ?
Thursday, January 28, 2010

Contenu connexe

Similaire à Orientação a Objetos na prática em php

Polishing Interfaces
Polishing InterfacesPolishing Interfaces
Polishing Interfaces
UX Booth
 
Iste 2010 presentation
Iste 2010 presentationIste 2010 presentation
Iste 2010 presentation
Mr.Ateach
 
Challenging the Gifted Student Using Google Apps and Web 2.0 Tools
Challenging the Gifted Student Using Google Apps and Web 2.0 ToolsChallenging the Gifted Student Using Google Apps and Web 2.0 Tools
Challenging the Gifted Student Using Google Apps and Web 2.0 Tools
Mr.Ateach
 
SACAC Pecha Kucha
SACAC Pecha KuchaSACAC Pecha Kucha
SACAC Pecha Kucha
TargetX
 
Behavior-Driven Development с RSpec и Cucumber
Behavior-Driven Development с RSpec и CucumberBehavior-Driven Development с RSpec и Cucumber
Behavior-Driven Development с RSpec и Cucumber
Stefan Kanev
 
Hootsuite dev 2011
Hootsuite dev 2011Hootsuite dev 2011
Hootsuite dev 2011
ujihisa
 
Social Media For Museums
Social Media For MuseumsSocial Media For Museums
Social Media For Museums
michellej
 

Similaire à Orientação a Objetos na prática em php (13)

¿Cómo depurar la información médica que nos llega por medios electrónicos?
¿Cómo depurar la información médica que nos llega por medios electrónicos?¿Cómo depurar la información médica que nos llega por medios electrónicos?
¿Cómo depurar la información médica que nos llega por medios electrónicos?
 
Show Me The Change - Approach
Show Me The Change - ApproachShow Me The Change - Approach
Show Me The Change - Approach
 
Polishing Interfaces
Polishing InterfacesPolishing Interfaces
Polishing Interfaces
 
DESIGN Palestra: Motion Design
DESIGN Palestra: Motion DesignDESIGN Palestra: Motion Design
DESIGN Palestra: Motion Design
 
Iste 2010 presentation
Iste 2010 presentationIste 2010 presentation
Iste 2010 presentation
 
Challenging the Gifted Student Using Google Apps and Web 2.0 Tools
Challenging the Gifted Student Using Google Apps and Web 2.0 ToolsChallenging the Gifted Student Using Google Apps and Web 2.0 Tools
Challenging the Gifted Student Using Google Apps and Web 2.0 Tools
 
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
 
Мерчендайзинг против юзабилити
Мерчендайзинг против юзабилитиМерчендайзинг против юзабилити
Мерчендайзинг против юзабилити
 
SACAC Pecha Kucha
SACAC Pecha KuchaSACAC Pecha Kucha
SACAC Pecha Kucha
 
Behavior-Driven Development с RSpec и Cucumber
Behavior-Driven Development с RSpec и CucumberBehavior-Driven Development с RSpec и Cucumber
Behavior-Driven Development с RSpec и Cucumber
 
FITC 2010 Slides
FITC 2010 SlidesFITC 2010 Slides
FITC 2010 Slides
 
Hootsuite dev 2011
Hootsuite dev 2011Hootsuite dev 2011
Hootsuite dev 2011
 
Social Media For Museums
Social Media For MuseumsSocial Media For Museums
Social Media For Museums
 

Plus de Campus Party Brasil

Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
Campus Party Brasil
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
Campus Party Brasil
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
Campus Party Brasil
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Campus Party Brasil
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
Campus Party Brasil
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
Campus Party Brasil
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
Campus Party Brasil
 

Plus de Campus Party Brasil (20)

Wordpress
WordpressWordpress
Wordpress
 
Buracos negros
Buracos negrosBuracos negros
Buracos negros
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivos
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?
 
Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
 
Passeio virtual pelo LHC
Passeio virtual pelo LHCPasseio virtual pelo LHC
Passeio virtual pelo LHC
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
 
Fazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXFazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectX
 
Blue Via
Blue ViaBlue Via
Blue Via
 
Linux para iniciantes
Linux para iniciantesLinux para iniciantes
Linux para iniciantes
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
 
Gestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreGestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software Livre
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
 
Vida de Programador
Vida de Programador Vida de Programador
Vida de Programador
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Dernier (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Orientação a Objetos na prática em php