Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


apostila 04 10 2012 php postgresql, Notas de estudo de Gestão de Recursos Humanos

apostila php

Tipologia: Notas de estudo

2015

Compartilhado em 24/05/2015

daysi-bishop-12
daysi-bishop-12 🇧🇷

5

(2)

38 documentos

1 / 64

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40

Pré-visualização parcial do texto

Baixe apostila 04 10 2012 php postgresql e outras Notas de estudo em PDF para Gestão de Recursos Humanos, somente na Docsity!

Licenciamento de Uso Este documento é propriedade intelectual © 2006 do Centro de Computação da Unicamp e distribuído sob os seguintes termos:

  1. As apostilas publicadas pelo Centro de Computação da Unicamp podem ser reproduzidas e distribuídas no todo ou em parte, em qualquer meio físico ou eletrônico, desde que os termos desta licença sejam obedecidos, e que esta licença ou referência a ela seja exibida na reprodução.
  2. Qualquer publicação na forma impressa deve obrigatoriamente citar, nas páginas externas, sua origem e atribuições de direito autoral (o Centro de Computação da Unicamp e seu(s) autor(es)).
  3. Todas as traduções e trabalhos derivados ou agregados incorporando qualquer informação contida neste documento devem ser regidas por estas mesmas normas de distribuição e direitos autorais. Ou seja, não é permitido produzir um trabalho derivado desta obra e impor restrições à sua distribuição. O Centro de Computação da Unicamp deve obrigatoriamente ser notificado ([email protected]) de tais trabalhos com vista ao aperfeiçoamento e incorporação de melhorias aos originais. Adicionalmente, devem ser observadas as seguintes restrições: · A versão modificada deve ser identificada como tal · O responsável pelas modificações deve ser identificado e as modificações datadas · Reconhecimento da fonte original do documento · A localização do documento original deve ser citada · Versões modificadas não contam com o endosso dos autores originais a menos que autorização para tal seja fornecida por escrito. A licença de uso e redistribuição deste material é oferecida sem nenhuma garantia de qualquer tipo, expressa ou implícita, quanto a sua adequação a qualquer finalidade. O Centro de Computação da Unicamp não assume qualquer responsabilidade sobre o uso das informações contidas neste material. Agência para a Formação Profissional da Unicamp – AFPU 2

Capítulo 1

Programação Orientada à Programação Orientada à

Objetos (POO) com PHP Objetos (POO) com PHP

A orientação à objetos é uma maneira de programar que modela os processos de programação de uma maneira próxima à realidade, tratando a cada componente de um programa como um objeto, com suas características e funcionalidades. O tratamento de objetos no PHP 5 foi totalmente reescrito, permitindo a utilização de uma maior quantidade de recursos da POO, melhor performance e mais vantagens na implementação deste tipo de programação. A POO também possibilita uma maior otimização e reutilização do código. Agência para a Formação Profissional da Unicamp – AFPU 4

1. Classes e Objetos

Classe é a estrutura mais fundamental para a criação de um objeto. Uma classe nada mais é do que um conjunto de variáveis (propriedades ou atributos) e funções (métodos), que definem o estado e o comportamento do objeto. Quando criamos uma classe, temos como objetivo final a criação de objetos, que nada mais são do que representações dessa classe em uma variável. Para declararmos uma classe, utilizamos a palavra-chave class. Nosso exemplo será com a classe Noticia : Exemplo 1.1 – Classe Noticia: titulo = $valor; } function setTexto($valor) { $this->texto = $valor; } function exibeNoticia() { echo ""; echo "". $this->titulo ."

"; echo $this->texto; echo "

"; } } $not = new Noticia; $not->titulo = 'Novo curso de PHP Avançado'; $not->texto = 'Este curso contém os seguinte tópicos: POO, XML, etc.'; $not->exibeNoticia(); ?> Obs: como os atributos são do tipo public , podemos atribuir valores diretamente para eles, sem a necessidade de utilizar os métodos. Para manipularmos variáveis na classe, precisamos usar a variável $this , funções e o separador ->. A classe Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 5

## 1.1– Herança

Herança é uma forma de reutilização de código em que novas classes são criadas a partir de classes existentes, absorvendo seus atributos e comportamentos, e complementando-os com novas necessidades. O exemplo da vez será com a classe NoticiaPrincipal: Exemplo 1.1.1 – Teste de Herança com a Classe NoticiaPrincipal: imagem = $valor; } function exibeNoticia() { echo ""; echo "imagem ."">

"; echo "". $this->titulo ."

"; echo $this->texto; echo "

"; } } $not = new NoticiaPrincipal; $not->titulo = 'Vestibular da Unicamp termina nesta quarta-feira'; $not->texto = 'Um dos maiores vestibulares do país acaba nesta quarta-feira,'; $not->texto .= 'com número recorde de inscritos'; $not->imagem = 'img_unicamp.jpg'; $not->exibeNoticia(); ?> Como mostra o exemplo, a classe NoticiaPrincipal herdou todas as características da classe Noticia, e ainda foi adicionado o método que dá suporte à exibição de imagens nas notícias principais. Nessas sub-classes é possível redefinir métodos, podendo modificá-los da forma que o programador quiser, como foi o caso do método exibeNoticia(). Sobrescrever métodos é algo bastante comum no processo de herança, visto que os métodos que foram criados na classe “pai” não precisam ser necessariamente os mesmos que os definidos nas classes “filhas”. Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 7

## 1.2– Método Construtor e Destrutor

✔ Construtor : É um método que utiliza o nome reservado __construct() e que não precisa ser chamado da forma convencional, pois é executado automaticamente quando instanciamos um objeto a partir de uma classe. Sua utilização é indicada para rotinas de inicialização. O método construtor se encarrega de executar as ações de inicialização dos objetos, como por exemplo, atribuir valores a suas propriedades. Exemplo 1.2.1 – Método construtor na Classe Noticia: titulo = $valor_tit; $this->texto = $valor_txt; } function exibeNoticia() { echo ""; echo "". $this->titulo ."

"; echo $this->texto; echo "

"; } } $not = new Noticia('Novo curso de PHP Avançado','Abordaremos: POO, XML, etc.'); $not->exibeNoticia(); ?> Agência para a Formação Profissional da Unicamp – AFPU 8

Destrutor : O método destrutor será chamado assim que todas as referências a um objeto em particular forem removidas ou quando o objeto for explicitamente destruído. O método __destruct é executado toda vez que um objeto da classe é destruído pelo fim do script ou através da função unset. Sua função é basicamente zerar variáveis, limpar dados de sessões, fechar conexões com banco de dados, etc. Como no método construtor, o método destrutor possui um nome reservado, o __destruct(). O exemplo a seguir aplica este conceito na classe Noticia e NoticiaPrincipal: **Exemplo 1.2.3 – Método destrutor:** function __destruct() { echo “Destruindo objeto...”; }

1.3- Encapsulamento

Este recurso possibilita ao programador restringir ou liberar o acesso às propriedades e métodos das classes. A utilização deste recurso só se tornou possível à partir do PHP 5. Aplica-se este conceito através dos operadores: ✔ Public : Quando definimos uma propriedade ou método como public, estamos dizendo que suas informações podem ser acessadas diretamente por qualquer script, a qualquer momento. Até este momento, todas as propriedades e métodos das classes que vimos foram definidas dessa forma. ✔ Protected : Quando definimos em uma classe uma propriedade ou método do tipo protected, estamos definindo que ambos só poderão ser acessados pela própria classe ou por seus herdeiros, sendo impossível realizar o acesso externo. ✔ Private : Quando definimos propriedades e métodos do tipo private, só a própria classe pode realizar o acesso, sendo ambos invisíveis para herdeiros ou para classes e programas externos. Agência para a Formação Profissional da Unicamp – AFPU 10

A utilização destes modificadores de acesso encontra-se nos próximos dois exemplos. O primeiro exemplo redefiniu as classes Noticia e NoticiaPrincipal: Exemplo 1.3.1 – Utilização dos modificadores de acesso nas Classes Noticia e NoticiaPrincipal: Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 11

NoticiaUltimaHora: "; echo "". $this->titulo ."

"; echo $this->texto; echo "

"; } } $titulo = 'Vestibular da Unicamp'; $texto = 'Um dos maiores vestibulares do país tem número recorde de inscritos'; $imagem = 'img_unicamp.jpg'; $not_princ = new NoticiaPrincipal; $not_princ->setTitulo($titulo); $not_princ->setTexto($texto); $not_princ->setImagem($imagem); $not_princ->exibeNoticia(); echo "

"; print_r($not_princ); echo ""; $titulo = 'Campus recebe 500 novas árvores'; $texto = 'Plantio, realizado entre 2007 e o primeiro semestre de 2008,'; $texto .= ' integra programa ambiental que estimula a participação da comunidade'; $not_ulthora = new NoticiaUltimaHora; $not_ulthora->setTitulo($titulo); $not_ulthora->setTexto($texto); $not_ulthora->exibeNoticia(); echo ""; print_r($not_ulthora); echo ""; ?>

1.4- Interfaces

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 13

Interfaces permitem a criação de código que especifica quais métodos uma classe deve implementar, sem ter que definir como esses métodos serão tratados. Interfaces são definidas utilizando a palavra-chave interface, e devem ter definições para todos os métodos listados na interface. Classes podem implementar mais de uma interface se desejarem, listando cada interface separada por um espaço. Dizer que uma classe implementa uma interface e não definir todos os métodos na interface resultará em um erro fatal exibindo quais métodos não foram implementados. Vamos criar uma interface que servirá de base para as nossas classes de notícias utilizadas até agora: Exemplo 1.4.1 – Interface iNoticia:

A implementação desta interface é simples. No código a seguir utilizamos a nossa interface iNoticia para a classe Noticia e conseqüentemente NoticiaPrincipal: Agência para a Formação Profissional da Unicamp – AFPU 14

1.5 - Classes Abstratas

Classes abstratas são classes que não podem ser instanciadas diretamente, sendo necessária a criação de uma sub-classe para conseguir utilizar suas características. Isso não quer dizer que os métodos destas classes também precisem ser abstratos, isso é opcional. Já as propriedades não podem ser definidas como abstratas. Aqui vemos o conceito de polimorfismo, ou seja, a possibilidade de dois ou mais objetos executarem a mesma ação. Um exemplo prático seria uma moto e um carro, os dois tem a ação em comum de Frear e Acelerar; em orientação a objetos usamos classes abstratas para dar funcionalidades iguais a objetos diferentes. Vamos transformar a classe Noticia em uma classe abstrata e depois herdar suas características para a sub-classe NoticiaPrincipal. Abaixo, a seqüência de exemplos para demonstrar este recurso: Exemplo 1.5.1 – Classe Abstrata Noticia titulo = $valor; } abstract public function setTexto($valor); abstract public function exibeNoticia(); } ?> O exemplo acima nos mostra a utilização tanto de métodos abstratos quanto de métodos comuns. Os métodos abstratos não devem conter código, apenas definição. Quando criamos um método abstrato, fazemos com que ele seja implementado em todas as classes que herdarem dessa classe abstrata. No exemplo a seguir, os métodos abstratos serão definidos na sub-classe que Agência para a Formação Profissional da Unicamp – AFPU 16

herdará Noticia, ou seja, NoticiaPrincipal: Exemplo 1.5.2 – Sub-classe NoticiaPrincipal utilizando a classe abstrata Noticia: texto = $valor; } function setImagem($valor) { $this->imagem = $valor; } function exibeNoticia() { echo ""; echo "imagem ."">

"; echo "". $this->titulo ."

"; echo $this->texto; echo "

"; } } $titulo = 'Vestibular da Unicamp'; $texto = 'Um dos maiores vestibulares do país chega ao fim,'; $texto .= 'com número recorde de inscritos'; $imagem = 'img_unicamp.jpg'; $not = new NoticiaPrincipal; $not->setTitulo($titulo); $not->setTexto($texto); $not->setImagem($imagem); $not->exibeNoticia(); echo "

"; print_r($not); echo ""; ?> Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 17

Exemplo 1.6.2 – Classe NoticiaPrincipal herda características da classe Noticia: imagem = $valor; } function exibeNoticia() { echo ""; echo "imagem ."">

"; echo "". $this->titulo ."

"; echo $this->texto; echo "

"; } } $titulo = 'Vestibular da Unicamp termina nesta quarta-feira'; $texto = 'Um dos maiores vestibulares do país acaba nesta quarta-feira,'; $texto .= 'com número recorde de inscritos'; $imagem = 'img_unicamp.jpg'; $not = new NoticiaPrincipal; $not->setTitulo($titulo); $not->setTexto($texto); $not->setImagem($imagem); $not->exibeNoticia(); echo "

"; print_r($not); echo ""; ?> O teste realizado com essas classes mostra o seguinte resultado: Fatal error : Class NoticiaPrincipal may not inherit from final class (Noticia) Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 19

  • Capítulo 1 – Programação Orientada a Objetos............................................... - Classes e objetos................................................................................... - Herança ………....................................................................................... - Método construtor e destrutor................................................................ - Encapsulamento.................................................................................... - Interfaces............................................................................................... - Classes abstratas................................................................................... - Palavra-chave 'final'............................................................................... - Métodos e propriedades estáticas.......................................................... - Métodos mágicos....................................................................................
  • Capítulo 2 – Manipulação de arquivos texto.....................................................
  • Capítulo 3 – Simple XML...................................................................................
  • Capítulo 4 – Templates com POO...................................................................... - Última atualização em 04/10/
    • Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp
  • Agência para a Formação Profissional da Unicamp – AFPU