SlideShare une entreprise Scribd logo
1  sur  11
Télécharger pour lire hors ligne
Sessão de esclarecimento
PHP “avançado” e PHP OO
    Tips and tricks of the real world

                            José Pedro Saraiva
                             Jose.pedro@ua.pt
                                   labs.sapo/ua
Abordagem do problema
   Tentar segmentar e decompor o problema em pequenos
    blocos lógicos mais ou menos auto contidos e com
    tarefas específicas;
       Apesar de mais moroso a longo prazo é recompensador:
           Organização e legibilidade do código;
           Maior abstracção;
           Maior flexibilidade para futura adaptação a outras necessidades;


           Tem um custo… requer tempo e planeamento e implica, regra
            geral, um overhead adicional

                                 José Pedro Saraiva | labs.sapo/ua
Abordagem do problema: MVC
   Metodologia de desenvolvimento de software que estrutura
    uma aplicação em três blocos lógicos:
       Model – Modelo de dados, fontes de dados de uma forma geral
        (base de dados, feeds, storage, etc);
       View – Camada de apresentação (interface)
       Controller – Lógica de negócio (lógica associada à acção
        pretendida)


       Complemento desta segmentação com componentes que podem
        ser usados nestes três blocos (autenticação, sessões,
        webservices, etc)

                              José Pedro Saraiva | labs.sapo/ua
Abordagem do problema: MVC
   Grandes vantagens (do meu ponto de vista):
       Disciplina o programador a abordar o problema com
        estas três lógicas separadas à partida;

       Melhor para trabalho em equipa por permitir
        desenvolvimento, teste e manutenção (mais ou menos)
        independente.




                            José Pedro Saraiva | labs.sapo/ua
Estruturação de uma aplicação web
   /
       Configuração e bootstrapping (arranque da aplicação)
           config/config.php
           config/bootstrap.php
           config/.htaccess (não necessário neste caso)


       Webroot pública (deverá ser a raíz do ponto de vista do webserver)
           webroot/*



       Ficheiros temporários (ficheiros de sessão, logs, cache, etc)
           tmp/*



                                    José Pedro Saraiva | labs.sapo/ua
Alguns conceitos básicos
   Funções de verificação de variáveis: isset, empty,
    is_null
       Função isset e empty suprimem eventuais notices se a
        variável não estiver definida

   Funções de verificação de tipos de uma variável:
    is_string, is_array, is_int, is_float, is_numeric, etc…

   Operador @ e strict comparison


                            José Pedro Saraiva | labs.sapo/ua
Alguns conceitos básicos
   Fluxo do script e controlo de output
       Funções echo, header e output buffering (ob_start,
        ob_get_contents, ob_end_clean, ob_end_flush)



   Clarificar conceito de constante e funções de
    define(), defined() e constant();




                           José Pedro Saraiva | labs.sapo/ua
Debugging e logging
   Debug? Vale tudo…
       Assegurar que as directivas de configuração do PHP
        estão configuradas para debug (com ini_set ou outro
        método)

       Funções de referência: error_log, var_dump, print_r,
        var_export, debug_backtrace(), debug_print_backtrace() ,
        file_put_contents e trigger_error




                            José Pedro Saraiva | labs.sapo/ua
Misc
   preg_match, preg_match_all, preg_replace,
    preg_replace_callback, preg_grep, preg_quote
   func_num_args(), func_get_args();
   call_user_func, call_user_func_array, eval,
    anonymous functions, variables as functions;




                      José Pedro Saraiva | labs.sapo/ua
PHP Object Oriented Programming
   Polimorfismo, overload e encapsulamento
   $this e parent – Diferença entre :: e →;
   public, protected, private;
   class vars e class constants;
   getters e setters
   constantes __FUNCTION__ e __CLASS__, funções
    get_class, class_exists, …;
   Excepções: throw, try { } catch () { };
   Função __call;
   Staticness e singleton.

                    José Pedro Saraiva | labs.sapo/ua
Outros temas a abordar
   Cache
   Segurança
       SQL Injection
       session hijacking
       acesso indevido ao filesystem

   php-cli
       command line
       ficheiro de configuração independente
   Implementação de JSONP server side


                           José Pedro Saraiva | labs.sapo/ua

Contenu connexe

Tendances

Orientação a objetos php
Orientação a objetos   phpOrientação a objetos   php
Orientação a objetos phpsecomp2011
 
SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014
SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014
SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014Rodrigo Montoro
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddCarlos Santana
 
Object Oriented Programming
Object Oriented Programming Object Oriented Programming
Object Oriented Programming Alexandre Schmidt
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean CodeAndré Leoni
 
Programacao funcional dojo
Programacao funcional dojoProgramacao funcional dojo
Programacao funcional dojoFrancieli Viane
 

Tendances (8)

Orientação a objetos php
Orientação a objetos   phpOrientação a objetos   php
Orientação a objetos php
 
SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014
SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014
SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014
 
Clean Code
Clean CodeClean Code
Clean Code
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tdd
 
Object Oriented Programming
Object Oriented Programming Object Oriented Programming
Object Oriented Programming
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean Code
 
Programacao funcional dojo
Programacao funcional dojoProgramacao funcional dojo
Programacao funcional dojo
 
Workshop questões básicas e avançadas
Workshop questões básicas e avançadasWorkshop questões básicas e avançadas
Workshop questões básicas e avançadas
 

Similaire à Ap 04 05_10

Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
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
 
1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPressRudá Almeida
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de softwarericardophp
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraDavid O'Keefe
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01joaocarlobarros
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010Eder Magalhães
 
J Boss Rules Mgjug V2
J Boss Rules Mgjug V2J Boss Rules Mgjug V2
J Boss Rules Mgjug V2Breno Barros
 

Similaire à Ap 04 05_10 (20)

Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
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
 
1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress1001 maneiras de debugar o WordPress
1001 maneiras de debugar o WordPress
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Palestra
PalestraPalestra
Palestra
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Framework Entities
Framework EntitiesFramework Entities
Framework Entities
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
 
J Boss Rules Mgjug V2
J Boss Rules Mgjug V2J Boss Rules Mgjug V2
J Boss Rules Mgjug V2
 

Ap 04 05_10

  • 1. Sessão de esclarecimento PHP “avançado” e PHP OO Tips and tricks of the real world José Pedro Saraiva Jose.pedro@ua.pt labs.sapo/ua
  • 2. Abordagem do problema  Tentar segmentar e decompor o problema em pequenos blocos lógicos mais ou menos auto contidos e com tarefas específicas;  Apesar de mais moroso a longo prazo é recompensador:  Organização e legibilidade do código;  Maior abstracção;  Maior flexibilidade para futura adaptação a outras necessidades;  Tem um custo… requer tempo e planeamento e implica, regra geral, um overhead adicional José Pedro Saraiva | labs.sapo/ua
  • 3. Abordagem do problema: MVC  Metodologia de desenvolvimento de software que estrutura uma aplicação em três blocos lógicos:  Model – Modelo de dados, fontes de dados de uma forma geral (base de dados, feeds, storage, etc);  View – Camada de apresentação (interface)  Controller – Lógica de negócio (lógica associada à acção pretendida)  Complemento desta segmentação com componentes que podem ser usados nestes três blocos (autenticação, sessões, webservices, etc) José Pedro Saraiva | labs.sapo/ua
  • 4. Abordagem do problema: MVC  Grandes vantagens (do meu ponto de vista):  Disciplina o programador a abordar o problema com estas três lógicas separadas à partida;  Melhor para trabalho em equipa por permitir desenvolvimento, teste e manutenção (mais ou menos) independente. José Pedro Saraiva | labs.sapo/ua
  • 5. Estruturação de uma aplicação web  /  Configuração e bootstrapping (arranque da aplicação)  config/config.php  config/bootstrap.php  config/.htaccess (não necessário neste caso)  Webroot pública (deverá ser a raíz do ponto de vista do webserver)  webroot/*  Ficheiros temporários (ficheiros de sessão, logs, cache, etc)  tmp/* José Pedro Saraiva | labs.sapo/ua
  • 6. Alguns conceitos básicos  Funções de verificação de variáveis: isset, empty, is_null  Função isset e empty suprimem eventuais notices se a variável não estiver definida  Funções de verificação de tipos de uma variável: is_string, is_array, is_int, is_float, is_numeric, etc…  Operador @ e strict comparison José Pedro Saraiva | labs.sapo/ua
  • 7. Alguns conceitos básicos  Fluxo do script e controlo de output  Funções echo, header e output buffering (ob_start, ob_get_contents, ob_end_clean, ob_end_flush)  Clarificar conceito de constante e funções de define(), defined() e constant(); José Pedro Saraiva | labs.sapo/ua
  • 8. Debugging e logging  Debug? Vale tudo…  Assegurar que as directivas de configuração do PHP estão configuradas para debug (com ini_set ou outro método)  Funções de referência: error_log, var_dump, print_r, var_export, debug_backtrace(), debug_print_backtrace() , file_put_contents e trigger_error José Pedro Saraiva | labs.sapo/ua
  • 9. Misc  preg_match, preg_match_all, preg_replace, preg_replace_callback, preg_grep, preg_quote  func_num_args(), func_get_args();  call_user_func, call_user_func_array, eval, anonymous functions, variables as functions; José Pedro Saraiva | labs.sapo/ua
  • 10. PHP Object Oriented Programming  Polimorfismo, overload e encapsulamento  $this e parent – Diferença entre :: e →;  public, protected, private;  class vars e class constants;  getters e setters  constantes __FUNCTION__ e __CLASS__, funções get_class, class_exists, …;  Excepções: throw, try { } catch () { };  Função __call;  Staticness e singleton. José Pedro Saraiva | labs.sapo/ua
  • 11. Outros temas a abordar  Cache  Segurança  SQL Injection  session hijacking  acesso indevido ao filesystem  php-cli  command line  ficheiro de configuração independente  Implementação de JSONP server side José Pedro Saraiva | labs.sapo/ua