Jos - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Jos

Description:

PHP & MySQL Jos Francisco [jfp_at_cin.ufpe.br] Os s originais s o parte do material de cursos anteriores do curso de PHP, ministrados por S rgio Clemente. – PowerPoint PPT presentation

Number of Views:121
Avg rating:3.0/5.0
Slides: 31
Provided by: Jobs4
Category:
Tags: jos | smarty

less

Transcript and Presenter's Notes

Title: Jos


1
PHP 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.

3
Roteiro
  • Objetos
  • Classes
  • The Skin Pattern
  • Debugador de PHP

4
Objetos
  • 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.

5
Classes
  • É 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.

6
Objetos 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.

7
Classes em PHP
  • Elementos
  • Variáveis (Estado)
  • Funções (Operações)
  • Construtor

8
Sintaxe
  • Criando uma classe

class nomeDaClasse     // variáveis     
    // funções          // construtores    
9
Sintaxe
  • Exemplo

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
10
Sintaxe
  • Criando um objeto

us new UsuarioSessao(cvfm", Cleviton")
     us-gtsalvar()      echo us-gtnome
11
Sintaxe
  • 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
12
Sintaxe
  • 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.

13
Sintaxe
  • 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

14
Site Oficial PHP. Visitem-no! ?
  • O que posso encontrar lá?
  • Documentação
  • Exemplos
  • ...
  • Abram o browser visite o endereço
  • www.php.net

15
The 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).

16
lt?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...  
17
The Skin Pattern
  • Outro exemplo

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
18
The Skin Pattern
  • Solução
  • Dividir o script em 2 partes
  • Processamento
  • Apresentação

19
Exemplo Trivial
  • Mecanismo

processamento.php lt?php msg "Você já votou"
include(template.htm") ?gt
lthtmlgt ... Você já votou ...
template.htm lthtmlgt ... lt?php echo msg ?gt ...
20
The 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
21
The 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/

22
PEAR
  • 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

23
PECL
  • Repositório oficial das extensões de php
  • SQLite
  • Zip
  • Rar
  • Endereço http//pecl.php.net/

24
Próximos Passos
  • Zend PHP Certification
  • Preço 125 dólares

25
Zend 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
26
Zend Performance Suite
27
PHP/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

28
Debugador de PHP
  • IDE
  • NuSphere PhpED (Pago)
  • http//www.nusphere.com/
  • Debuga até html

29
Dúvidas??
30
PHP MySQL
  • José Francisco jfp_at_cin.ufpe.br
Write a Comment
User Comments (0)
About PowerShow.com