PHP Avançado Magno Leal. Ementa ORIENTAÇÃO OBJETO: o Introdução o Classe o Objeto o Herança o Polimorfismo o Abstração o Interfaces o Encapsulamento ARQUITETURA

Download PHP Avançado Magno Leal. Ementa ORIENTAÇÃO OBJETO: o Introdução o Classe o Objeto o Herança o Polimorfismo o Abstração o Interfaces o Encapsulamento ARQUITETURA

Post on 18-Apr-2015

103 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

<ul><li> Slide 1 </li> <li> PHP Avanado Magno Leal </li> <li> Slide 2 </li> <li> Ementa ORIENTAO OBJETO: o Introduo o Classe o Objeto o Herana o Polimorfismo o Abstrao o Interfaces o Encapsulamento ARQUITETURA MVC: o Model o View o Contoller o Padres de Projeto MANIPULAO DE BANCO DE DADOS COM PDO: Viso Geral sobre a API do PDO Funes para manipulao de banco dados no php Conectando no Banco de Dados Listando Dados Inserindo Dados Atualizando Dados Excluindo Dados PHPSMARTY: oViso geral oComo utilizar oUsando tags e funes oCriando tags personalizadas </li> <li> Slide 3 </li> <li> Aula 1: Orientao Objeto </li> <li> Slide 4 </li> <li> Introduo Programao mais prxima do MUNDO REAL; Viso do sistema sobre objetos reais, os quais possumos maior compreenso; </li> <li> Slide 5 </li> <li> Classe Estrutura que define um tipo de dados, podendo conter atributos (estado) e tambm funes mtodos (comportamento); </li> <li> Slide 6 </li> <li> Classe Construtores : Define o comportamento inicial de um objeto, mtodo chamado na instanciao do objeto (new); Destrutores: Mtodo executado automaticamente quando o objeto desalocado da memria; </li> <li> Slide 7 </li> <li> Prtica 01 Crie uma classe e defina nela atributos e mtodos coerentes. Crie um comportamento inicial para classe. Defina tambm um comportamento caso o objeto dessa classe seja desalocado. </li> <li> Slide 8 </li> <li> Objeto Objeto uma instncia de uma classe, ele existe durante um instante de tempo da sua criao a sua destruio. Acessando atributos e mtodos: </li> <li> Slide 9 </li> <li> Prtica 02 Teste a classe que voc criou utilizando os atributos e mtodos dela. Fique a vontade para fazer quaisquer testes. </li> <li> Slide 10 </li> <li> Herana Compartilhamento de atributos e comportamentos entre classes de uma mesma hierarquia. Classes inferiores herdam automaticamente todas as propriedades e mtodos das classes superiores(superclasses) </li> <li> Slide 11 </li> <li> Polimorfismo Classes derivadas de uma mesma superclasse tenham mtodos iguais, mas comportamentos diferentes, redefinidos em cada classe filha. </li> <li> Slide 12 </li> <li> Prtica 03 Crie classes para praticar o que vimos sobre herana e polimorfismo. Exemplos de herana: o Pessoa: Fsica e Jurdica o Conta: Poupana e Corrente o Arquivo: Vdeo, Imagem e Pdf o Funcionrio: Professor e Coordenador o Veculo: Avio, carro e bicicleta </li> <li> Slide 13 </li> <li> Abstrao Abstrair separar, isolar, simplificar as partes do sistema em objetos. Classe abstrata: classes que definem o esqueleto de comportamento de outras classes, no podem ser instanciadas, ou seja, s existem objetos das classes reais que herdam dela. Classes filhas so responsveis pela implementao da classe abstrata. </li> <li> Slide 14 </li> <li> Classe Abstrata </li> <li> Slide 15 </li> <li> Interface Classe que contm a prototipao de mtodos que devem ser implementados pelas classes que posteriormente venham a implement-la. </li> <li> Slide 16 </li> <li> Interface x Classe Abstrata Interfaces o Uma interface no considerada uma Classe e sim uma Entidade. o No possui implementao, apenas assinatura, ou seja, apenas a definio dos seus mtodos sem o corpo. o Seus mtodos so implicitamente Pblicos e Abstratos. o No h como fazer uma instncia de uma Interface e nem como criar um Construtor. o Funcionam como um tipo de "contrato", onde so especificados os atributos, mtodos e funes que as classes que implementem essa interface so obrigadas a implementar. o As Interfaces podem ser usadas para implementar herana mltipla. Classes Abstratas o As classes abstratas devem conter pelo menos um mtodo abstrato, que no tem corpo. o um tipo especial de classe que no h como criar instncias dela. o usada apenas para ser herdada, funciona como uma sub-classe. o Uma grande vantagem que fora a hierarquia para todas as sub-classes. o um tipo de contrato que faz com que as sub-classes contemplem as mesmas hierarquias e/ou padres. </li> <li> Slide 17 </li> <li> Interface x Classe Abstrata Interface um set de mtodos sem qualquer implementao que deve ser herdado por outras classes j implementadas; Classe Abstrata uma classe base que pode ter um ou mais mtodos completos, mas pelo menos um ou mais destes mtodos tem que criados incompletos (sem corpo). Se todos os mtodo da Classe abstrata forem sem corpo, ela se torna uma Interface. O propsito de uma Classe Abstrata prover uma base de definies de como um set de Classes Derivadas iro trabalhar e ento permitir os programadores de preencher as implementaes nas Classes derivadas. Para mais detalhes, visite o link: o http://www.devmedia.com.br/articles/viewcomp.asp?comp=13337http://www.devmedia.com.br/articles/viewcomp.asp?comp=13337 </li> <li> Slide 18 </li> <li> Encapsulamento Proteo de acesso aos membros internos de um objeto. A prpria classe defini como seus mtodos e atributos devem ser acessados. Modificadores de Acesso: o Private: permiti a visibilidade se e somente se for acessado dentro da prpria classe; o Protected: permiti a visibilidade na prpria classe e nas que herdarem ela, ou seja, nas classes filhas; o Public: permite a visibilidade livremente em qualquer lugar. </li> <li> Slide 19 </li> <li> Prtica 04 Crie uma classe de domnio de uma aplicao que salva uma agenda pessoal mas que no serve para um s usurio, ou seja, um site que guarda agenda de usurios. A classe deve conter todos os atributos necessrios, esses devem ser acessveis somente pela prpria classe (encapsulamento), no esquea de criar ascessores paras os atributos (getters e setters). Modelo de exemplo </li> <li> Slide 20 </li> <li> Aula 2: Padres de Projeto </li> <li> Slide 21 </li> <li> Motivao Organizao Padronizao Fcil Manuteno Reutilizao Eficincia Etc... </li> <li> Slide 22 </li> <li> Padro MVC Modelo no qual possibilita o reaproveitamento mximo das funcionalidades ou de partes dos sistemas produzidos nas mais diversas plataformas e equipamentos, desktop, web, embarcado, etc. </li> <li> Slide 23 </li> <li> MODEL (Modelo) Modelo da aplicao, onde so definidos propriedades e atributos dos seus personagens. Camada lgica, aonde ficar toda a regra de negcio e persistncia de dados. o Na maioria dos casos existe ainda uma camada extra de persistncia dos dados (DAO) e de regra de negcio (Service) que veremos mais a frente. O modelo pode ser compartilhado entre vrios objetos, vises e controladores. </li> <li> Slide 24 </li> <li> VIEW(Visualizao) Camada de visualizao da sua aplicao, onde ela apenas apresenta o que foi obtido atravs do controle ao usurio. A viso no deve ter nenhuma lgica de cdigo, apenas a exibio dos dados. a renderizao dos dados contidos no Model afim de que o usurio possa interagir com o sistema, ou seja a interface com o usurio, as telas do sistema. </li> <li> Slide 25 </li> <li> Controller (Controle) Camada onde sero processadas todas as requisies feitas atravs da interface (Viso). Acessa o Modelo afim de obter determinadas informaes. Recomenda-se ter o mnimo de cdigo possvel para um menor acoplao. o gerenciador da sua aplicao. </li> <li> Slide 26 </li> <li> Padro DAO DAO: Object Access Data Camada extra que pode ser adicionada ao padro MVC, mais precisamente a camada MODEL, que serve para isolar toda a parte de acesso aos dados do sistema. Assim caso precise modificar o banco de dados ou realizar alguma manuteno na lgica do banco de dados, ela vai estar concentrada em uma s parte do sistema. </li> <li> Slide 27 </li> <li> Padro Service Camada extra que pode ser adicionada ao Controller para garantir menor acoplamento, como tambm a Model. Ela fica responsvel por garantir todas as regras de negcio que possam ter no sistema. Validaes, testes, etc. </li> <li> Slide 28 </li> <li> Padro Indicado VIEW CONTROLLER SERVICE DAO MODEL </li> <li> Slide 29 </li> <li> Prtica 05 Crie todas os models (classes de domnio) do site de agenda de usurios. Comece a pensar nas regras de negcio que possa ter no site. </li> <li> Slide 30 </li> <li> Aula 3 e 4: PDO </li> <li> Slide 31 </li> <li> Introduo PDO (PHP Data Objects) OO; Tem objetivo de prover uma padronizao da forma com que PHP se comunica com um banco de dados relacional; Define um conjunto de classes e a assinatura dos mtodos de comunicao com uma base de dados. Alguns recursos podem no ser suportados por determinados SGBDs </li> <li> Slide 32 </li> <li> Dependncias Para podermos utilizar o PDO, deve-se habilitar no php.ini os drivers de acesso para o banco de dados de nossa aplicao, no linux habilitamos da seguinte forma: o extension=pdo.so o extension=pdo_mysql.so (caso o bando seja mysql) E no windows: o extension=php_pdo.dll o extension=php_pdo_mysql.dll (caso o banco seja mysql) </li> <li> Slide 33 </li> <li> Conectando no Banco Obs.: Cada banco pode ter uma string de conexo diferente </li> <li> Slide 34 </li> <li> Listando Dados </li> <li> Slide 35 </li> <li> Alguns Tipos de Fetch PDO::FETCH_ASSOC Retorna um array indexado pelo nome da coluna; PDO::FETCH_NUM Retorna um array indexado pela posio numrica da coluna; PDO::FETCH_BOTH Retorna um array indexado pelo nome da coluna e pela posio numrica da mesma; PDO::FETCH_OBJ Retorna um objeto annimo de modo que a coluna acessada como propriedade. Mais em: http://www.php.net/manual/pt_BR/pdostatement.fetch.phphttp://www.php.net/manual/pt_BR/pdostatement.fetch.php E fetchAll em: http://www.php.net/manual/pt_BR/pdostatement.fetchall.phphttp://www.php.net/manual/pt_BR/pdostatement.fetchall.php </li> <li> Slide 36 </li> <li> Inserindo Dados </li> <li> Slide 37 </li> <li> Slide 38 </li> <li> Atualizando Dados </li> <li> Slide 39 </li> <li> Excluindo Dados </li> <li> Slide 40 </li> <li> Prtica 06 Escolha uma das classes de domnio e crie uma classe DAO para manipular o acesso aos dados dessa classe. A classe deve conter os seguintes mtodos: o Salvar (que sirva tanto para salvar ou atualizar) o Excluir o Listar o BuscarPorID Pratique em casa e crie os DAOs das outras classes. </li> <li> Slide 41 </li> <li> Aula 5: PhpSmarty </li> <li> Slide 42 </li> <li> Introduo O Smarty um sistema de templates para PHP. Mais especificamente, ele fornece uma maneira fcil de controlar a separao da aplicao lgica e o contedo de sua apresentao. Isto melhor descrito em uma situao onde o programador da aplicao e o designer do template executam diferentes funes, ou na maioria dos casos no so a mesma pessoa Mais em: http://www.smarty.net/http://www.smarty.net/ </li> <li> Slide 43 </li> <li> Configurao Bsica Exemplo de Classe: </li> <li> Slide 44 </li> <li> Utilizao Bsica Atribuindo Valores: assign('chave', 'valor'); Abrindo um arquivo de template: display('teste.tpl'); Retornar o Html gerado de um template: fetch('teste.tpl'); </li> <li> Slide 45 </li> <li> Algumas Manipulaes em Templates Incluir outro template: {include file="layout/head.tpl"} No interpretar trecho de cdigo: {literal} {/literal} Condio: {if teste}{/if} ou {if teste}{else}{/if} ou {if teste}{elseif teste}{/if}; Valor Default: {$variavel|default:'asdf'} Select html: {html_options name=usuarioID options=$usuarios selected=1} Loop: {for $i=1 to 100}{/for} ou {foreach $usuarios as $usuario}{/foreach} Mais em: http://www.smarty.net/documentationhttp://www.smarty.net/documentation Dica: http://cirofeitosa.com.br/post/smarty-e-php-tudo-a-verhttp://cirofeitosa.com.br/post/smarty-e-php-tudo-a-ver </li> <li> Slide 46 </li> <li> Prtica 07 Criar um template smarty e todas as configuraes necessrias O template deve exibir a lista de tipos de contato ( ) </li> </ul>