O documento apresenta uma sessão de esclarecimento sobre PHP avançado e programação orientada a objetos em PHP. Aborda tópicos como a abordagem do problema usando o padrão MVC, estruturação de aplicações web em PHP, conceitos básicos como verificação de variáveis e tipos, fluxo do script, debugging e logging. Também discute programação orientada a objetos em PHP, cache, segurança e implementação de JSONP no servidor.
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