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

Mais conteúdo relacionado

PPTX
Programando php com excelência
PPTX
Frameworks em Java
PDF
10 Boas Práticas de Programação
PDF
Zend Framework 2 é legal ! Mas como ele funciona ?!
PDF
Programação funcional - o que é? Como aplicar? Quais os benefícios?
PDF
Pattners Everywhere, Even in Javascript
PPTX
Curso Básico de Java - Aula 2
PPTX
Algoritmos - Comandos de Controle de Programa
Programando php com excelência
Frameworks em Java
10 Boas Práticas de Programação
Zend Framework 2 é legal ! Mas como ele funciona ?!
Programação funcional - o que é? Como aplicar? Quais os benefícios?
Pattners Everywhere, Even in Javascript
Curso Básico de Java - Aula 2
Algoritmos - Comandos de Controle de Programa

Mais procurados (8)

PDF
Orientação a objetos php
PPTX
SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014
PPTX
Clean Code
PDF
Aexo TI - Boas práticas de testes tdd
ODP
Object Oriented Programming
PPTX
Apresentação Clean Code
PDF
Programacao funcional dojo
PPTX
Workshop questões básicas e avançadas
Orientação a objetos php
SCAP ( Security Content Automation Protocol ) na BSides São Paulo 2014
Clean Code
Aexo TI - Boas práticas de testes tdd
Object Oriented Programming
Apresentação Clean Code
Programacao funcional dojo
Workshop questões básicas e avançadas
Anúncio

Semelhante a Ap 04 05_10 (20)

PDF
PHP, Mercado e Certificações
PPT
Aula 01 - Programação Web - PHP
PDF
Serversidephp pptx2-120418140114-phpapp01
PDF
Preparando-se para a prova da Certificação Zend PHP 5.3
PDF
Aula05-ProgramacaoparaWeb123456878915151
PDF
Phpjedi 090307090434-phpapp01 2
PPT
Php
PDF
Slide Aula - Curso CakePHP
PPTX
Apresentação faef
PDF
PHP Jedi - Boas Práticas e Alta Performance
PDF
PHP: Linguagem + Mysql + MVC + AJAX
PDF
Apresentação formação web - up marketing digital - módulo ii
PPT
Apresentação faef
PDF
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
PDF
Python mudando o modo de desenvolver para a internet
PDF
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
PPTX
PHP Tools for Fast coding
PPTX
PPTX
M5 php rc
PDF
PHP - Programação para seres humanos
PHP, Mercado e Certificações
Aula 01 - Programação Web - PHP
Serversidephp pptx2-120418140114-phpapp01
Preparando-se para a prova da Certificação Zend PHP 5.3
Aula05-ProgramacaoparaWeb123456878915151
Phpjedi 090307090434-phpapp01 2
Php
Slide Aula - Curso CakePHP
Apresentação faef
PHP Jedi - Boas Práticas e Alta Performance
PHP: Linguagem + Mysql + MVC + AJAX
Apresentação formação web - up marketing digital - módulo ii
Apresentação faef
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a internet
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
PHP Tools for Fast coding
M5 php rc
PHP - Programação para seres humanos
Anúncio

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