A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.

Apresentações semelhantes


Apresentação em tema: "José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente."— Transcrição da apresentação:

1 José Francisco [jfp@cin.ufpe.br] PHP & MySQL

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->login; $_SESSION['nome'] = $this->nome; } function ler() { session_start(); $this->login = $_SESSION['login']; $this->nome = $_SESSION['nome']; } function UsuarioSessao($login, $nome) { $this->login = $login; $this->nome = $nome; } } atributos métodos construtor

10 Sintaxe Criando um objeto $us = new UsuarioSessao(“cvfm", “Cleviton"); $us->salvar(); echo $us->nome;

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_start(); $_SESSION['login'] = $this->login; $_SESSION['nome'] = $this->nome; $_SESSION[‘permissao'] = $this->permissao; } //pode criar novas funções function temPermissao($exigida) { $retorno = false; if($this->permissao >= $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 \n"; } } class B extends A { function exemplo() { echo "Eu sou a função redefinida B::exemplo(). \n"; A::exemplo(); } } // Nao ha nenhum objeto da classe A. // Isto ira imprimir // Eu sou a função original A::exemplo(). A::exemplo(); // cria um objeto a partir da classe B $b = new B(); // Isto ira imprimir // Eu sou a função redefinida B::exemplo(). // Eu sou a função original A::exemplo(). $b->exemplo(); ?>

14 Site Oficial PHP. Visitem-no! O que posso encontrar lá?  Documentação  Exemplos ... Abram o browser visite o endereço:  www.php.net 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 <?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->executarQuery("select 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 coditarefa=$coditarefa;"); $tarefa = mysql_fetch_array($result_tarefa); $nome = $tarefa['nome']; $dia = $tarefa['dia']; $mes = $tarefa['mes']; $ano = $tarefa['ano']; $duracao = $tarefa['duracao']; $descricao = $tarefa['descricao']; } >? Tarefa function carregarCampos() { document.forms[0].nome.value = " "; document.forms[0].duracao.value = " "; document.forms[0].ano.value = " "; document.forms[0].descricao.value = " "; dropdown = document.forms[0].dia; dropdown.options[0].selected = false; dropdown.options[ ].selected = true;... }...

17 The Skin Pattern Outro exemplo: executarQuery("select login,nome from usuario;"); while (($usuario = mysql_fetch_array($usuarios))) { echo " ". $usuario['nome']; } } else { $usuarios = $bd->executarQuery("SELECT u.nome, u.login, tu.coditarefa FROM usuario as u LEFT JOIN tarefa_usuario as tu ON u.login = tu.login and tu.coditarefa=$coditarefa;"); while (($usuario = mysql_fetch_array($usuarios))) { $out = " ". $usuario['nome']; echo $out; } } ?>

18 The Skin Pattern Solução  Dividir o script em 2 partes: Processamento Apresentação

19 Exemplo Trivial Mecanismo: template.htm......... “Você já votou”... processamento.php

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-template-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/HTML_Template_Flexy http://pear.php.net/package/HTML_Template_Flexy  Smarty: http://smarty.php.net/http://smarty.php.net/  PHP Savant : http://phpsavant.com/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 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/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. Cache de conteúdo Compressão Aceleração Fonte: http://www.zend.com/store/products/zend-performance-how-it-works.php#1 Armazena na memória resultados de scripts Retorna a resposta comprimida Mantém uma cache do código compilado

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/javahttp://br2.php.net/java

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

29 Dúvidas??

30 PHP & MySQL José Francisco [jfp@cin.ufpe.br]


Carregar ppt "José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente."

Apresentações semelhantes


Anúncios Google