Title: Jos
1PHP MySQL
- José Francisco jfp_at_cin.ufpe.br
2- Os slides originais são parte do material de
cursos anteriores do curso de PHP, ministrados
por Sérgio Clemente. Com modificações! - Também possui a contribuição de Cleviton V. F.
Monteiro. - Conteúdo didático é baseado em diversas fontes
como tutoriais, livros e o site oficial de PHP. - Inspirado também em slides de Jobson Ronan,
instrutor de Java Avançado do CITi.
3Roteiro
- Objetos
- Classes
- The Skin Pattern
- Debugador de PHP
4Objetos
- Necessidade de definir tipos mais complexos.
- Um objeto possui
- Comportamento Operações que o objeto pode
executar. - Estado Informações sobre seu estado atual.
- Suportar hierarquia de tipos (Conta, Poupança)
- Exemplo Minha conta, Minha bicicleta.
5Classes
- É um modelo que define as variáveis e métodos
comum a todos objetos de um determinado tipo. - Exemplo Classe para encapsular os dados de
sessão.
6Objetos em PHP
- PHP4
- Não possui um modelo de objetos perfeito.
(Nojento?) - Não há encapsulamento (todos os atributos são
públicos) - Não há interfaces nem exceções.
- PHP5
- Modelo de objetos totalmente refeito, incluindo
até classes de reflexão.
7Classes em PHP
- Elementos
- Variáveis (Estado)
- Funções (Operações)
- Construtor
8Sintaxe
class nomeDaClasse // variáveis
// funções // construtores
9Sintaxe
class UsuarioSessao var nome var
login function salvar()
session_start() _SESSION'
login' this-gtlogin _SESSION'nome'
this-gtnome function ler()
session_start() this-gtlogin
_SESSION'login' this-gtnome
_SESSION'nome' function
UsuarioSessao(login, nome)
this-gtlogin login
this-gtnome nome
atributos
métodos
construtor
10Sintaxe
us new UsuarioSessao(cvfm", Cleviton")
us-gtsalvar() echo us-gtnome
11Sintaxe
- Herança (extends)
- Herança múltipla não é suportada
class UsuarioSessaoPermissao extends
UsuarioSessao var permissao //Pode
redefinir as funções da classe pai
function salvar() session_star
t() _SESSION'login'
this-gtlogin _SESSION'nome'
this-gtnome _SESSIONpermissao'
this-gtpermissao //pode criar novas
funções function temPermissao(exigida)
retorno false if(this-gtpermissao gt
exigida) retorno true
return retorno
12Sintaxe
- Operador
- Utilizada para se referir a funções e variáveis
na classe base ou referenciar funções em classes
que não possuem instância.
13Sintaxe
- lt?phpclass A function exemplo()
echo "Eu sou a função original Aexemplo().ltbr
/gt\n" class B extends A function
exemplo() echo "Eu sou a função
redefinida Bexemplo().ltbr /gt\n"
Aexemplo() // Nao ha nenhum objeto da
classe A.// Isto ira imprimir// Eu sou a
função original Aexemplo().ltbr
/gtAexemplo()// cria um objeto a partir da
classe Bb new B()// Isto ira imprimir//
Eu sou a função redefinida Bexemplo().ltbr
/gt// Eu sou a função original Aexemplo().ltbr
/gtb-gtexemplo() - ?gt
14Site Oficial PHP. Visitem-no! ?
- O que posso encontrar lá?
- Documentação
- Exemplos
- ...
- Abram o browser visite o endereço
- www.php.net
15The Skin Pattern
- Separar a apresentação (skin) da lógica da
aplicação. - Facilitar o trabalho do designer
- Ele não precisa saber programar para poder fazer
o design de uma página. - Problema O que acontece na prática é colocar
código HTML dentro do código da aplicação, usando
chamadas de métodos específicos (echo).
16lt?php ... if (_GET'operacao'
"Cadastrar") coditarefa -1
//gambirarra para o select la debaixo
agora getdate()
dia agora'mday'
mes agora'mon'
ano agora'year'
nome "" duracao
"" descricao "" else
coditarefa _GET'coditarefa'
result_tarefa bd-gtexecutarQuery("sele
ct nome, descricao, EXTRACT(DAY FROM dataInicio)
as dia, EXTRACT(MONTH FROM dataInicio) as mes,
EXTRACT(YEAR FROM dataInicio) as ano,
DAYOFYEAR(dataFim) - DAYOFYEAR(dataInicio) as
duracao from tarefa where coditarefacoditarefa"
) tarefa mysql_fetch_array(result_ta
refa)
nome tarefa'nome'
dia tarefa'dia'
mes tarefa'mes'
ano tarefa'ano'
duracao tarefa'duracao'
descricao tarefa'descricao'
gt? lthtmlgtltheadgtlttitlegtTarefalt/titlegt
ltscript language"JavaScript"gt function
carregarCampos() document.forms0.
nome.value "lt? echo nome ?gt"
document.forms0.duracao.value "lt?
echo duracao ?gt" document.forms0
.ano.value "lt? echo ano ?gt"
document.forms0.descricao.value "lt?
echo descricao ?gt"
dropdown document.forms0.dia
dropdown.options0.selected false
dropdown.optionslt? echo dia
?gt.selected true ...
lt/scriptgt lt/headgt...
17The Skin Pattern
ltselect name"logins" size4 multiplegt lt?
if (_GET'operacao' "Cadastrar")
usuarios bd-gtexecutarQuery("select
login,nome from usuario") while
((usuario mysql_fetch_array(usuarios)))
echo "ltoption value" .
usuario'login' . "gt" . usuario'nome'
else usuarios
bd-gtexecutarQuery("SELECT u.nome, u.login,
tu.coditarefa FROM usuario as u LEFT JOIN
tarefa_usuario as tu ON u.login tu.login and
tu.coditarefacoditarefa") while
((usuario mysql_fetch_array(usuarios)))
out "ltoption value" .
usuario'login' if
(usuario'coditarefa' ! null)
out . " selected"
out . "gt" .
usuario'nome' echo out
?gt
lt/selectgt
18The Skin Pattern
- Solução
- Dividir o script em 2 partes
- Processamento
- Apresentação
19Exemplo Trivial
processamento.php lt?php msg "Você já votou"
include(template.htm") ?gt
lthtmlgt ... Você já votou ...
template.htm lthtmlgt ... lt?php echo msg ?gt ...
20The Skin Pattern
- Separação da apresentação da parte lógica.
- Maior facilidade de alterar qualquer um dos dois.
- Maior legibilidade.
- Pode ser utilizado para localização, e
personalização (webmail).
http//pear.php.net/manual/en/package.html.html-te
mplate-flexy.intro.php
21The Skin Pattern
- Vimos uma extremamente simples implementação do
Skin pattern. - Existem implementações mais reais
- HTML_Template_Flexy http//pear.php.net/package/H
TML_Template_Flexy - Smarty http//smarty.php.net/
- PHP Savant http//phpsavant.com/
22PEAR
- PHP Extension and Application Repository
- Fornecer bibliotecas open-source para usuários
PHP. - Padrão de codificação. http//pear.php.net/manual/
en/standards.php
23PECL
- Repositório oficial das extensões de php
- SQLite
- Zip
- Rar
- Endereço http//pecl.php.net/
24Próximos Passos
- Zend PHP Certification
- Preço 125 dólares
25Zend Performance Suite
- Componente opcional que melhora absurdamente a
performance do servidor.
Armazena na memória resultados de scripts
Cache de conteúdo
Compressão
Aceleração
Retorna a resposta comprimida
Mantém uma cache do código compilado
Fonte http//www.zend.com/store/products/zend-per
formance-how-it-works.php1
26Zend Performance Suite
27PHP/Java Integration Bridge
- Integração de PHP com JAVA
- Força das aplicações J2EE
- Facilidade das apresentações PHP para a web
- Informações http//br2.php.net/java
28Debugador de PHP
- IDE
- NuSphere PhpED (Pago)
- http//www.nusphere.com/
- Debuga até html
29Dúvidas??
30PHP MySQL
- José Francisco jfp_at_cin.ufpe.br