Desenvolvimento Web com
PHP
Pós-Graduação em Desenvolvimento
Web
Apresentação
Apresentação
• Professor: Thyago Maia Tavares de Farias
– Doutorando em Computação pelo Cin / UFPE
– Mestre em Informática pelo PPGI / DI / UFPB
– Bacharel em Ciência da Computação – UFPB
– Currículo Lattes: http://lattes.thyagomaia.net
– E-Mail: thyagomaia@gmail.com
3
Apresentação
• Foco da disciplina
 Apresentar os fundamentos do paradigma
orientado a objetos aplicado em PHP (PHP OO);
4
Apresentação
• Referência Bibliográfica
 PHP – Programando
com Orientação a
Objetos
 Autor: Pablo Dall’Oglio
 Editora: Novatec
5
Apresentação
• Sites auxiliares:
– http://facebook.com/profthyagomaia
– http://twitter.com/thyagomaia
– http://www.slideshare.net/thyagomaia
– http://www.php.net
– http://www.w3schools.com
– http://www.codeacademy.com.br
6
Apresentação
• Aplicações que serão utilizados no curso:
– Notepad++
• https://notepad-plus-plus.org/
– Xampp
• https://www.apachefriends.org/pt_br/index.html
7
Apresentação
• Avaliação:
– Miniprojeto: Desenvolvimento de uma aplicação
PHP orientada a objetos;
• Trabalho em Grupo (3 integrantes);
• Tema Livre (Deverá ser pré-aprovado pelo professor);
• Critérios de Avaliação:
– Interface, usabilidade, aplicação das competências e
habilidades adquiridas durante o curso, aplicação de pelo
menos um padrão de projeto, organização do Projeto e
apresentação ao professor (até 15 min.);
• Exercícios durante as aulas:
– Apresentar resolução na última aula;
8
Paradigmas de Programação
Paradigmas de Programação
 Uma linguagem de
programação (LP) = Notação
formal para descrição de
algoritmos em um
computador;
 É necessário entender as
organizações das LP, com
ênfase na compreensão dos
seus conceitos abstratos e
dos seus elementos de
representação;
10
Paradigmas de Programação
 Cada LP pode se relacionar com um método
de projeto específico;
 Cada linguagem de programação pode forçar
um certo estilo de programação;
 Tais estilos são chamados de paradigmas de
programação;
11
Paradigmas de Programação
 Principais paradigmas:
 Programação Procedural
 Programação Orientada a Objetos
12
Paradigmas de Programação
 Programação Procedural (Estruturado):
 Estilo de programação convencional (descrita no
aprendizado em algoritmos);
 Programas são decompostos em “passos” de
processamento;
 Rotinas são usadas na modularização de passos
específicos;
 Ex.: Pascal e C;
13
Paradigmas de Programação
 Programação Procedural:
14
program Teste;
var
a, b:integer;
begin
writeln('Digite um número para 7');
readln(a); writeln('Digite o número para 6');
readln(b);
if (a > b) then { Se 7 é maior que 6 então }
writeln('7 é maior que 6')
else { Senão… }
if (a < b) then
writeln('6 é maior que 7')
else
writeln('6 é igual à 7');
end.
Paradigma de Programação
Orientado a Objetos
Paradigma de Programação OO
 O paradigma OO propõe que a solução de
qualquer problema pode ser obtida seguindo
estas etapas:
 Procurar e implementar classes existentes no problema;
 Determinar as características e responsabilidades de cada
classe;
 Instanciar objetos de cada classe;
 Estabelecer como ocorrerá a interação entre os objetos;
16
Paradigma de Programação OO
 O modelo OO é formado por quatro
componentes básicos:
 Objetos;
 Mensagens;
 Métodos;
 Classes;
17
Paradigma de Programação OO
 Classe
 Estrutura de dados que possui atributos (variáveis de
classe) e métodos (funções PHP);
 Descreve as propriedades e comportamentos de objetos;
 Modelo ou template para objetos;
 Objeto
 Originada com base em uma classe;
 A partir de um objeto, temos “uma cópia” dos atributos e
métodos de uma classe;
 Interagem no sistema e armazenam dados;
18
Paradigma de Programação OO
 Exemplo 1 – Implementação de uma classe em PHP:
19
// Arquivo Produto.php
<?php
class Produto
{
// Classe com 4 atributos
public $codigo;
public $descricao;
public $preco;
public $quantidade;
}
?>
Paradigma de Programação OO
 Exemplo 1 – Instanciando um objeto da classe
Produto:
20
// Arquivo testeObjeto.php
<?php
// Incluindo a classe criada anteriormente
require_once ‘classes/Produto.php’;
// Criando um objeto
$produto = new Produto();
// Atribuindo valores aos atributos
$produto->codigo = 4001;
$produto->descricao = ‘CD – AC/DC’;
?>
Paradigma de Programação OO
 Exemplo 2 – A classe Produto com atributos e um
método:
21
// Arquivo Produto.class.php
<?php
class Produto
{
// Classe com 4 atributos
public $codigo;
public $descricao;
public $preco;
public $quantidade;
Paradigma de Programação OO
 Exemplo 2 – A classe Produto com atributos e um
método:
22
// Arquivo Produto.class.php
public function imprimeEtiqueta()
{
echo ‘Código: ’ . $this->codigo .
‘<br>’;
echo ‘Descrição: ’ . $this-
>descricao . ‘<br>’;
}
}
?>
Paradigma de Programação OO
 Exemplo 2 – Instanciando um objeto da classe
Produto e executando um método do mesmo:
23
// Arquivo testeObjeto.php
<?php
// Incluindo a classe criada anteriormente
require_once ‘classes/Produto.php’;
// Criando um objeto
$produto = new Produto();
// Atribuindo valores aos atributos
$produto->codigo = 4001;
$produto->descricao = ‘CD – AC/DC’;
$produto->imprimeEtiqueta();
?>
PHP OO – Construtores e
Destrutores
Construtor
 Método especial utilizado para definir o
comportamento inicial de um objeto;
 Muito utilizado para inicializar atributos
(variáveis de classe);
 Executado automaticamente no momento da
instância de um objeto (uso da palavra
reservada new);
25
Construtor
 Sintaxe:
26
function __construct($p_1, $p_2, ..., $p_n)
Destrutor
 Método especial a ser executado
automaticamente quando o objeto é
desalocado da memória ou quando o
programa é finalizado;
 Muito utilizado para finalizar conexões,
apagar arquivos temporários, etc.;
27
Destrutor
 Sintaxe:
28
function __destruct()
PHP OO – Herança
Herança
 Permite reutilizar atributos e métodos já definidos
em uma outra classe;
 Elimina eventuais duplicações ou reescritas de
código;
 Classes-filha (subclasses) herdam implementações
da classe-pai (superclasse) de acordo com uma
hierarquia;
30
Herança
 Uma subclasse
pode herdar
todos os
componentes de
uma classe pai;
 Permite a
criação de novas
classes sem
duplicação de
código; 31
Pessoa
# nome: String
+ escreverNome()
Juridica
- cnpj: String
+validarCNPJ(): Boolean
Fisica
- cpf: String
+validarCPF(): Boolean
Superclasse: Características comuns
Subclasses: Características específicas
Herança
 Usamos a palavra reservada extends na assinatura
de uma classe para estabelecer uma hierarquia;
 Sintaxe:
32
<?php
class Filha extends Pai
{
// ...
Exercício
Exercício
• Etapa 1 – Preparação do Domínio
 Crie uma pasta em htdocs chamada heranca;
 Na pasta heranca, crie uma pasta chamada
classes;
34
Exercício
 Etapa 2 - Crie as seguintes classes na pasta
heranca/classes:
35
Funcionario
# nome: string
# salario: float
+ relatorioFunc()
Gerente
- projeto: string
Programador
- linguagem: string
OBS 1: Crie métodos
get e set caso seja necessário.
Construtores também podem
ser utilizados.
OBS 2: O métodos relatorio
simplesmente exibe as
informações do funcionário
no navegador
Exercício
• Etapa 3 – Criação de um formulário HTML
 Crie um formulário HTML que permita ao usuário
digitar o nome, salário e observações de um
funcionário, além de informar se o mesmo é um
gerente ou programador;
 Método de envio: POST;
 Os dados deverão ser submetidos para o script
“exibirFunc.php”;
 Salve o documento HTML na pasta heranca com o
nome index.html;
36
Exercício
• Etapa 4 – Criação do script exibirFunc.php na
pasta herança
 O script deverá inicialmente receber os dados submetidos
pelo formulário HTML;
 Em seguida, o script deverá criar um objeto da classe que
representa o cargo do funcionário;
 Com o objeto criado, os dados enviados a partir do
formulário deverão ser submetidos para o mesmo;
 O script deverá executar o método relatorioFunc,
objetivando apresentar os dados do funcionário;
 O script deverá exibir as observações do funcionário (o
projeto ou a linguagem de programação);
37
PHP OO – Polimorfismo
Polimorfismo
 Permite que subclasses possuam métodos iguais
(com a mesma assinatura) de uma superclasse, mas
com comportamentos diferentes;
 As implementações de tais métodos são redefinidas
nas classes-filhas;
 Classes-filha (subclasses) herdam implementações
da classe-pai (superclasse) de acordo com uma
hierarquia;
39
Polimorfismo
 Ex.:
40
Figura
# x: double
# y: double
+ mostraArea()
Triangulo
+ mostraArea()
Quadrado
+ mostraArea()
Exercício
Exercício
• Etapa 1 – Preparação do Domínio
 Crie uma pasta em htdocs chamada
polimorfismo;
 Na pasta polimorfismo, crie uma pasta chamada
classes;
42
Polimorfismo
 Etapa 2: Crie as seguintes classes na pasta
polimorfismo/classes :
43
Conta
# saldo: double
+ deposita(double)
+ saca(double)
+ imprimeExtrato()
ContaCorrente
+ deposita(double)
ContaPoupanca
OBS: Crie os métodos
get e set necessários. Construtores
podem ser criados.
OBS: O método saca da
Subclasse ContaCorrente
Deverá descontar uma
taxa de 10 centavos em
cada saque.
Exercício
• Etapa 3 – Criação do script index.php na pasta
polimorfismo
 O script deverá criar um objeto para cada tipo de conta;
 Em seguida, o script deverá definir o saldo inicial de R$
200,00 na conta corrente e R$ 500,00 na poupança;
 Após a definição do valor inicial de cada conta, saque R$
100,00 de cada conta;
 O script deverá executar o método imprimeExtrato de
cada conta, exibindo seu saldo final;
44
PHP OO – Classes Abstratas
Classes Abstratas
 Classes estruturais que servem de base para outras
classes;
 Não podem ser instanciadas (terem objetos)
 Apenas as subclasses poderão ser instanciadas;
 Usamos a palavra reservada abstract na assinatura
de uma classe para torná-la abstrata;
46
Classes Abstratas
 Sintaxe:
47
<?php
abstract class Conta
{
// ...
Classes Abstratas
 Considere o exemplo anterior:
48
Figura
# x: double
# y: double
+ mostraArea()
Triangulo
+ mostraArea()
Quadrado
+ mostraArea()
Classes Abstratas
 Considere o exemplo anterior:
49
Figura
# x: double
# y: double
+ mostraArea()
Triangulo
+ mostraArea()
Quadrado
+ mostraArea()
A classe Figura nunca
é instanciada (não
criamos objetos dessa
classe)
Definida apenas para
questões de herança
e polimorfismo
Classes Abstratas
 Considere o exemplo anterior:
50
Figura
# x: double
# y: double
+ mostraArea()
Triangulo
+ mostraArea()
Quadrado
+ mostraArea()
Tal classe é uma forte
candidata a ser uma
classe abstrata!
PHP OO – Métodos Abstratos
Métodos Abstratos
 Métodos que possui apenas assinaturas,
implementados em classes abstratas;
 Não possuem lógica! Apenas assinaturas;
 Faz com que as classes-filha sejam obrigadas a
definir as implementações dos métodos abstratos;
 Impõem o polimorfismo às subclasses!
 Usamos a palavra reservada abstract na assinatura
de um método para torná-la abstrata;
52
Métodos Abstratos
 Sintaxe - Exemplo:
53
<?php
// ...
abstract function transferir($conta);
// ...
Métodos Abstratos
 Voltando o exemplo anterior:
54
Figura
# x: double
# y: double
+ mostraArea()
Triangulo
+ mostraArea()
Quadrado
+ mostraArea()
Métodos Abstratos
 Considere o exemplo anterior:
55
Figura
# x: double
# y: double
+ mostraArea()
Triangulo
+ mostraArea()
Quadrado
+ mostraArea()
O método
mostraArea() não é
genérica o suficiente
(não existe uma única forma
de se calcular a área)
Definida apenas para
questões de
polimorfismo
Métodos Abstratos
 Considere o exemplo anterior:
56
Figura
# x: double
# y: double
+ mostraArea()
Triangulo
+ mostraArea()
Quadrado
+ mostraArea()
Tal método é um forte
candidato a ser um
método abstrato!
Exercício
Exercício
• Etapa 1 – Preparação do Domínio
 Crie uma pasta em htdocs chamada abstratos;
 Na pasta abstratos, crie uma pasta chamada
classes;
58
Exercício
 Etapa 2: Crie as seguintes classes na pasta
abstratos/classes :
59
Animal
# come: String
+ habitoAlimentar()
Carnivoro
+ habitoAlimentar()
Herbivoro
+ habitoAlimentar()
OBS: Crie os métodos
get, set e construtores caso sejam
necessários.
OBS: O método
habitoAlimentar()
simplesmente imprime na
tela o hábito alimentar de
cada animal.
Classe abstrata
Método abstrato
Exercício
• Etapa 3 – Criação do script index.php na pasta
abstratos
 O script deverá criar um objeto para cada tipo de animal;
 Em seguida, o script deverá definir o hábito alimentar do
carnívoro para “carne” e do herbívoro para “legumes”;
 O script deverá exibir o método alimentar de cada animal;
60
PHP OO – Classes Finais
Classes Finais
 Classes que não podem ter herdeiros (não podem
ser superclasses);
 Sintaxe - Exemplo:
62
<?php
final class ContaPoupanca extends Conta
{
// ...
PHP OO – Métodos Finais
Métodos Finais
 Métodos que não podem ser sobrescritos;
 Proíbem que subclasses usem polimorfismo!
 Usamos a palavra reservada final na assinatura de
um método para impedir que seja sobrescrita;
64
Métodos Finais
 Sintaxe - Exemplo:
65
<?php
// ...
final function transferir($conta)
{
// ...
PHP OO – Encapsulamento
Encapsulamento
 Mecanismo que provê proteção de acesso aos
atributos e métodos de um objeto;
 A depender de um projeto de uma classe, certos
atributos e métodos devem ser tratados
exclusivamente:
 Pela classe que os possui;
 Pela superclasse e subclasses em uma hierarquia;
 Por qualquer classe ou script;
67
Encapsulamento
 Para definir a visibilidade dos membros de um
objeto, usamos as palavras reservadas public,
private ou protected na assinatura de atributos e
métodos;
 public – Podem ser acessados livremente;
 private – Podem ser acessados dentro da própria
classe em que foram declarados;
 protected – Podem ser acessados dentro da
própria classe em que foram declarados e a partir
das classes descendentes;
68
Encapsulamento
 Representação UML para as visibilidades de
atributos e métodos em diagramas de classe:
 (+) public;
 (-) private;
 (#) protected;
69
Encapsulamento
 Exemplo:
70
Encapsulamento
 Exemplo:
71
PHP OO – Armazenamento de
Dados em Classes
Armazenamento em Classes
 Os seguintes membros podem ser utilizados para
armazenamento de dados em classes:
 Constantes;
 Atributos Estáticos;
 Podem ser acessados diretamente a partir do nome
da classe, sem a necessidade de um objeto para tal;
73
Armazenamento em Classes
 Sintaxe – Constantes – Exemplo:
 Para acessar uma constante de classe...
 ... a partir da própria classe: self::Nome;
 ... a partir de uma subclasse: parent::Nome;
 ... Externamente, fora da hierarquia: Biblioteca::Nome;
74
<?php
class Biblioteca
{
const Nome = “GTK ”;
}
?>
Armazenamento em Classes
 Sintaxe – Constantes – Exemplo:
75
<?php
class Biblioteca
{
const Nome = “GTK ”;
public function imprimeConstante() {
echo self::Nome . "<br>";
}
}
echo Biblioteca::Nome . ‘<br>’;
?>
Armazenamento em Classes
 Sintaxe – Atributos Estáticos – Exemplo:
 Para acessar um atributo de classe estático...
 ... a partir da própria classe: self::$Quantidade ou
static::$Quantidade;
 ... a partir de uma subclasse: parent::$Quantidade;
 ... Externamente, fora da hierarquia:
Aplicacao::$Quantidade; 76
<?php
class Aplicacao
{
public static $Quantidade;
}
?>
Armazenamento em Classes
 Sintaxe – Atributos Estáticos – Exemplo:
77
<?php
class Aplicacao
{
public static $Quantidade;
function __construct()
{
static::$Quantidade++;
}
}
$app1 = new Aplicacao();
echo Aplicacao::$Quantidade . '<br>';
$app2 = new Aplicacao();
echo Aplicacao::$Quantidade . '<br>';
?>
PHP OO – Métodos Estáticos
Métodos Estáticos
 Podem ser invocados diretamente pelo nome da
classe, sem a necessidade de instanciar um objeto;
 Também permitem que outras classes possam manipular
atributos estáticos privados de uma classe fornecedora;
 Usamos a palavra reservada static na assinatura de
um método de classe;
 Usamos a sintaxe NomeDaClasse::NomeDoMetodo()
para executar um método estático;
79
Métodos Estáticos
80
<?php
class Aplicacao {
private static $Quantidade;
public function __construct() {
static::$Quantidade++;
}
public static function imprimeContador() {
return static::$Quantidade;
}
}
$app1 = new Aplicacao();
echo Aplicacao::imprimeContador() . '<br>';
$app2 = new Aplicacao();
echo Aplicacao::imprimeContador() . '<br>';
?>
PHP OO – Interfaces
Interfaces
 “Obriga” a um determinado grupo de classes a ter
métodos em comum;
 Funciona como uma espécie de contrato que, quando
assumido por uma classe, deve ser implementado;
 Apenas assinaturas de métodos fazem parte do
corpo de interfaces;
 As classes que seguem este “contrato” deverão
implementar o comportamento dos métodos;
 Tal estrutura não possui atributos;
82
Interface
 Usamos a palavra reservada interface na assinatura
da classe que funcionará como uma interface;
 Usamos a palavra reservada implements na
assinatura da classe que implementará uma
interface;
 Uma classe pode implementar mais de uma
interface;
83
Interface
 Sintaxe – Exemplo:
84
<?php
interface IMensagem
{
function mensagem();
}
class Aplicacao implements IMensagem
{
function mensagem() {
echo ‘Exemplo interface’;
}
}
?>
<< interface >>
IMensagem
+ mensagem()
Interfaces
 Ex:
85
Figura
# x: double
# y: double
Triangulo
<< interface >>
ICalculos
+ calculaArea(): double
+ calculaArea(): double
Quadrado
+ calculaArea(): double
Exercício
Exercício
• Etapa 1 – Preparação do Domínio
 Crie uma pasta em htdocs chamada contrato;
 Na pasta contrato, crie uma pasta chamada
classes;
87
Exercício
 Etapa 2 - Implemente as classes abaixo na
pasta dedicada para tal:
88
Veiculo
# nome: String
# marca: String
# modelo: String
getters e setters
Carro
<< interface >>
ICaracteristicas
+ exibeNome()
+ exibeMarca()
+ exibeModelo()
Moto
+ exibeNome()
+ exibeMarca()
+ exibeModelo()
+ exibeNome()
+ exibeMarca()
+ exibeModelo()
Exercício
• Etapa 3 – Criação de um formulário HTML
 Crie um formulário HTML que permita ao usuário
digitar o nome, marca e modelo de um veículo,
além de informar o tipo de veículo;
 Método de envio: POST;
 Os dados deverão ser submetidos para o script
“exibir_veiculo.php”;
 Salve o documento HTML na pasta contrato com o
nome index.html;
89
Exercício
• Etapa 4 – Criação do script exibir_veiculo.php
na pasta contrato
 O script deverá inicialmente receber os dados submetidos
pelo formulário HTML;
 Em seguida, o script deverá criar um objeto da classe que
representa o veículo selecionado;
 Com o objeto criado, os dados enviados a partir do
formulário deverão ser submetidos para o mesmo;
 O script deverá exibir as observações do veículo;
90
PDO – PHP Data Objects
PDO – PHP Data Objects
 Unifica o acesso às diferentes extensões de bancos
de dados presentes em PHP;
 Provê uma API limpa e consistente, unificando a
maioria das características presentes nas extensões
de acesso a banco de dados
 Unifica a chamada de métodos, graças à orientação
a objetos a partir do PHP 5;
92
PDO – PHP Data Objects
• Sequência de passos:
1. A aplicação estabelece uma conexão com o SGBD;
2. A aplicação seleciona uma base de dados a ser
utilizada durante a conexão;
3. A aplicação executa uma consulta específica
(seleção, inserção, remoção...);
4. A aplicação fecha a conexão corrente com o
SGBD;
PDO – PHP Data Objects
 PDO – Conexão com bancos de dados:
94
Banco String de Conexão
SQLite new PDO(‘sqlite: teste.db’);
FireBird new PDO(“firebird:dbname=C:base.GDB”, “SYSDBA”, “masterkey”);
MySQL new PDO('mysql:host=localhost;dbname=base', 'login', 'senha');
Postgres new PDO('pgsql:dbname=example; user=user;
password=senha;host=localhost');
PDO – Exemplos
PDO – Exemplos
 No phpmyadmin, configure o banco de dados da
atividade:
 Database: livros
 Tabela: famosos
 Campos: id (int, auto increment, chave primária) e
nome (varchar[100]);
96
PDO – Exemplos
 Exemplo 1: Inserindo dados via PDO
97
<?php
$conn = new
PDO('mysql:host=localhost;dbname=livros', ‘root',
'');
$conn->exec("INSERT INTO famosos (nome) VALUES
('Thyago Maia')");
$conn = null;
?>
PDO – Exemplos
 Exemplo 2: Listagem via PDO
98
<?php
$conn = new
PDO('mysql:host=localhost;dbname=livros', ‘root',
'');
$result = $conn->query("SELECT id, nome from
famosos");
if($result)
foreach($result as $row)
echo $row['id'] . '-' .
$row['nome'] . '<br>';
$conn = null;
?>
PDO – Exemplos
 Exemplo 3: Excluindo dados via PDO
99
<?php
$conn = new
PDO('mysql:host=localhost;dbname=livros', ‘root',
'Unipe');
$conn->exec("DELETE FROM famosos WHERE id =
1");
$conn = null;
?>
Exercício
Exercício
• Etapa 1 – Preparação do Banco de Dados no
phpmyadmin
 Database: sistema
 Tabela: cadastro
 Campos: codigo (int, auto increment, chave primária),
nome (varchar[100]), telefone (varchar[100]) e email
(varchar[100]);
101
Exercício
• Etapa 2 – Preparação do Domínio
 Crie uma pasta em htdocs chamada sistema;
102
Exercício
• Etapa 3 – Criação de um formulário HTML
 Crie um formulário HTML que permita ao usuário
digitar seu nome, telefone e e-mail;
 Método de envio: POST;
 Os dados deverão ser submetidos para o script
“cadastro.php”;
 Salve o documento HTML na pasta sistema com o
nome index.html;
103
Exercício
• Etapa 4 – Criação do script cadastro.php na
pasta sistema
 O script deverá inicialmente receber os dados
submetidos na etapa anterior;
 Em seguida, via PDO, o script deverá inserir os
dados no banco de dados;
 O script deverá redirecionar o usuário para o
script lista_usuarios.php;
104
Exercício
• Etapa 5 – Criação do script lista_usuarios.php
na pasta sistema
– O script deverá exibir todos os cadastros efetuados até o
momento, além de disponibilizar um link que permita ao
usuário efetuar um novo cadastro;
105
Exercício
• Etapa 6 – Testar a aplicação
 Abra o navegador de sua preferência e acesse:
 http://localhost/sistema ou
 http://127.0.0.1/sistema
 OBS.: Verifique se o servidor Apache do Xampp está ativo;
106
Exercício
Exercício
• Etapa 1 – Preparação do Banco de Dados no
phpmyadmin
 Utilizaremos a mesma base criada no exercício anterior;
108
Exercício
• Etapa 2 – Preparação do Domínio
 Utilizaremos a pasta sistema criada
anteriormente;
109
Exercício
• Etapa 3 – Criação de um formulário HTML
 Utilizaremos o mesmo formulário do exercício
anterior;
110
Exercício
• Etapa 4 – Criação da classe Cadastro.php na
pasta sistema
111
Cadastro
-nome: string
-telefone: string
-email: string
+setNome(nome: string) : void
+setTelefone(telefone: string) : void
+setEmail(email: string) : void
+getNome() : string
+getTelefone() : string
+getEmail() : string
+inserir() : void
+exibir() :void
Exercício
• Etapa 5 – Atualização do script cadastro.php
da pasta sistema
 O script deverá:
 Receber os dados submetidos na etapa anterior;
 Instanciar um objeto da classe Cadastro;
 Atribuir os dados recebidos para o objeto instanciado;
 Executar o método inserir a partir do objeto
instanciado;
 Executar o método exibir a partir do objeto
instanciado;
 Disponibilizar um link que permita ao usuário efetuar
um novo cadastro;
112
Exercício
• Etapa 6 – Testar a aplicação
 Abra o navegador de sua preferência e acesse:
 http://localhost/sistema ou
 http://127.0.0.1/sistema
 OBS.: Verifique se o servidor Apache do Xampp está ativo!
113

Desenvolvimento Web com PHP - Aula 3

  • 1.
  • 2.
  • 3.
    Apresentação • Professor: ThyagoMaia Tavares de Farias – Doutorando em Computação pelo Cin / UFPE – Mestre em Informática pelo PPGI / DI / UFPB – Bacharel em Ciência da Computação – UFPB – Currículo Lattes: http://lattes.thyagomaia.net – E-Mail: thyagomaia@gmail.com 3
  • 4.
    Apresentação • Foco dadisciplina  Apresentar os fundamentos do paradigma orientado a objetos aplicado em PHP (PHP OO); 4
  • 5.
    Apresentação • Referência Bibliográfica PHP – Programando com Orientação a Objetos  Autor: Pablo Dall’Oglio  Editora: Novatec 5
  • 6.
    Apresentação • Sites auxiliares: –http://facebook.com/profthyagomaia – http://twitter.com/thyagomaia – http://www.slideshare.net/thyagomaia – http://www.php.net – http://www.w3schools.com – http://www.codeacademy.com.br 6
  • 7.
    Apresentação • Aplicações queserão utilizados no curso: – Notepad++ • https://notepad-plus-plus.org/ – Xampp • https://www.apachefriends.org/pt_br/index.html 7
  • 8.
    Apresentação • Avaliação: – Miniprojeto:Desenvolvimento de uma aplicação PHP orientada a objetos; • Trabalho em Grupo (3 integrantes); • Tema Livre (Deverá ser pré-aprovado pelo professor); • Critérios de Avaliação: – Interface, usabilidade, aplicação das competências e habilidades adquiridas durante o curso, aplicação de pelo menos um padrão de projeto, organização do Projeto e apresentação ao professor (até 15 min.); • Exercícios durante as aulas: – Apresentar resolução na última aula; 8
  • 9.
  • 10.
    Paradigmas de Programação Uma linguagem de programação (LP) = Notação formal para descrição de algoritmos em um computador;  É necessário entender as organizações das LP, com ênfase na compreensão dos seus conceitos abstratos e dos seus elementos de representação; 10
  • 11.
    Paradigmas de Programação Cada LP pode se relacionar com um método de projeto específico;  Cada linguagem de programação pode forçar um certo estilo de programação;  Tais estilos são chamados de paradigmas de programação; 11
  • 12.
    Paradigmas de Programação Principais paradigmas:  Programação Procedural  Programação Orientada a Objetos 12
  • 13.
    Paradigmas de Programação Programação Procedural (Estruturado):  Estilo de programação convencional (descrita no aprendizado em algoritmos);  Programas são decompostos em “passos” de processamento;  Rotinas são usadas na modularização de passos específicos;  Ex.: Pascal e C; 13
  • 14.
    Paradigmas de Programação Programação Procedural: 14 program Teste; var a, b:integer; begin writeln('Digite um número para 7'); readln(a); writeln('Digite o número para 6'); readln(b); if (a > b) then { Se 7 é maior que 6 então } writeln('7 é maior que 6') else { Senão… } if (a < b) then writeln('6 é maior que 7') else writeln('6 é igual à 7'); end.
  • 15.
  • 16.
    Paradigma de ProgramaçãoOO  O paradigma OO propõe que a solução de qualquer problema pode ser obtida seguindo estas etapas:  Procurar e implementar classes existentes no problema;  Determinar as características e responsabilidades de cada classe;  Instanciar objetos de cada classe;  Estabelecer como ocorrerá a interação entre os objetos; 16
  • 17.
    Paradigma de ProgramaçãoOO  O modelo OO é formado por quatro componentes básicos:  Objetos;  Mensagens;  Métodos;  Classes; 17
  • 18.
    Paradigma de ProgramaçãoOO  Classe  Estrutura de dados que possui atributos (variáveis de classe) e métodos (funções PHP);  Descreve as propriedades e comportamentos de objetos;  Modelo ou template para objetos;  Objeto  Originada com base em uma classe;  A partir de um objeto, temos “uma cópia” dos atributos e métodos de uma classe;  Interagem no sistema e armazenam dados; 18
  • 19.
    Paradigma de ProgramaçãoOO  Exemplo 1 – Implementação de uma classe em PHP: 19 // Arquivo Produto.php <?php class Produto { // Classe com 4 atributos public $codigo; public $descricao; public $preco; public $quantidade; } ?>
  • 20.
    Paradigma de ProgramaçãoOO  Exemplo 1 – Instanciando um objeto da classe Produto: 20 // Arquivo testeObjeto.php <?php // Incluindo a classe criada anteriormente require_once ‘classes/Produto.php’; // Criando um objeto $produto = new Produto(); // Atribuindo valores aos atributos $produto->codigo = 4001; $produto->descricao = ‘CD – AC/DC’; ?>
  • 21.
    Paradigma de ProgramaçãoOO  Exemplo 2 – A classe Produto com atributos e um método: 21 // Arquivo Produto.class.php <?php class Produto { // Classe com 4 atributos public $codigo; public $descricao; public $preco; public $quantidade;
  • 22.
    Paradigma de ProgramaçãoOO  Exemplo 2 – A classe Produto com atributos e um método: 22 // Arquivo Produto.class.php public function imprimeEtiqueta() { echo ‘Código: ’ . $this->codigo . ‘<br>’; echo ‘Descrição: ’ . $this- >descricao . ‘<br>’; } } ?>
  • 23.
    Paradigma de ProgramaçãoOO  Exemplo 2 – Instanciando um objeto da classe Produto e executando um método do mesmo: 23 // Arquivo testeObjeto.php <?php // Incluindo a classe criada anteriormente require_once ‘classes/Produto.php’; // Criando um objeto $produto = new Produto(); // Atribuindo valores aos atributos $produto->codigo = 4001; $produto->descricao = ‘CD – AC/DC’; $produto->imprimeEtiqueta(); ?>
  • 24.
    PHP OO –Construtores e Destrutores
  • 25.
    Construtor  Método especialutilizado para definir o comportamento inicial de um objeto;  Muito utilizado para inicializar atributos (variáveis de classe);  Executado automaticamente no momento da instância de um objeto (uso da palavra reservada new); 25
  • 26.
  • 27.
    Destrutor  Método especiala ser executado automaticamente quando o objeto é desalocado da memória ou quando o programa é finalizado;  Muito utilizado para finalizar conexões, apagar arquivos temporários, etc.; 27
  • 28.
  • 29.
    PHP OO –Herança
  • 30.
    Herança  Permite reutilizaratributos e métodos já definidos em uma outra classe;  Elimina eventuais duplicações ou reescritas de código;  Classes-filha (subclasses) herdam implementações da classe-pai (superclasse) de acordo com uma hierarquia; 30
  • 31.
    Herança  Uma subclasse podeherdar todos os componentes de uma classe pai;  Permite a criação de novas classes sem duplicação de código; 31 Pessoa # nome: String + escreverNome() Juridica - cnpj: String +validarCNPJ(): Boolean Fisica - cpf: String +validarCPF(): Boolean Superclasse: Características comuns Subclasses: Características específicas
  • 32.
    Herança  Usamos apalavra reservada extends na assinatura de uma classe para estabelecer uma hierarquia;  Sintaxe: 32 <?php class Filha extends Pai { // ...
  • 33.
  • 34.
    Exercício • Etapa 1– Preparação do Domínio  Crie uma pasta em htdocs chamada heranca;  Na pasta heranca, crie uma pasta chamada classes; 34
  • 35.
    Exercício  Etapa 2- Crie as seguintes classes na pasta heranca/classes: 35 Funcionario # nome: string # salario: float + relatorioFunc() Gerente - projeto: string Programador - linguagem: string OBS 1: Crie métodos get e set caso seja necessário. Construtores também podem ser utilizados. OBS 2: O métodos relatorio simplesmente exibe as informações do funcionário no navegador
  • 36.
    Exercício • Etapa 3– Criação de um formulário HTML  Crie um formulário HTML que permita ao usuário digitar o nome, salário e observações de um funcionário, além de informar se o mesmo é um gerente ou programador;  Método de envio: POST;  Os dados deverão ser submetidos para o script “exibirFunc.php”;  Salve o documento HTML na pasta heranca com o nome index.html; 36
  • 37.
    Exercício • Etapa 4– Criação do script exibirFunc.php na pasta herança  O script deverá inicialmente receber os dados submetidos pelo formulário HTML;  Em seguida, o script deverá criar um objeto da classe que representa o cargo do funcionário;  Com o objeto criado, os dados enviados a partir do formulário deverão ser submetidos para o mesmo;  O script deverá executar o método relatorioFunc, objetivando apresentar os dados do funcionário;  O script deverá exibir as observações do funcionário (o projeto ou a linguagem de programação); 37
  • 38.
    PHP OO –Polimorfismo
  • 39.
    Polimorfismo  Permite quesubclasses possuam métodos iguais (com a mesma assinatura) de uma superclasse, mas com comportamentos diferentes;  As implementações de tais métodos são redefinidas nas classes-filhas;  Classes-filha (subclasses) herdam implementações da classe-pai (superclasse) de acordo com uma hierarquia; 39
  • 40.
    Polimorfismo  Ex.: 40 Figura # x:double # y: double + mostraArea() Triangulo + mostraArea() Quadrado + mostraArea()
  • 41.
  • 42.
    Exercício • Etapa 1– Preparação do Domínio  Crie uma pasta em htdocs chamada polimorfismo;  Na pasta polimorfismo, crie uma pasta chamada classes; 42
  • 43.
    Polimorfismo  Etapa 2:Crie as seguintes classes na pasta polimorfismo/classes : 43 Conta # saldo: double + deposita(double) + saca(double) + imprimeExtrato() ContaCorrente + deposita(double) ContaPoupanca OBS: Crie os métodos get e set necessários. Construtores podem ser criados. OBS: O método saca da Subclasse ContaCorrente Deverá descontar uma taxa de 10 centavos em cada saque.
  • 44.
    Exercício • Etapa 3– Criação do script index.php na pasta polimorfismo  O script deverá criar um objeto para cada tipo de conta;  Em seguida, o script deverá definir o saldo inicial de R$ 200,00 na conta corrente e R$ 500,00 na poupança;  Após a definição do valor inicial de cada conta, saque R$ 100,00 de cada conta;  O script deverá executar o método imprimeExtrato de cada conta, exibindo seu saldo final; 44
  • 45.
    PHP OO –Classes Abstratas
  • 46.
    Classes Abstratas  Classesestruturais que servem de base para outras classes;  Não podem ser instanciadas (terem objetos)  Apenas as subclasses poderão ser instanciadas;  Usamos a palavra reservada abstract na assinatura de uma classe para torná-la abstrata; 46
  • 47.
  • 48.
    Classes Abstratas  Considereo exemplo anterior: 48 Figura # x: double # y: double + mostraArea() Triangulo + mostraArea() Quadrado + mostraArea()
  • 49.
    Classes Abstratas  Considereo exemplo anterior: 49 Figura # x: double # y: double + mostraArea() Triangulo + mostraArea() Quadrado + mostraArea() A classe Figura nunca é instanciada (não criamos objetos dessa classe) Definida apenas para questões de herança e polimorfismo
  • 50.
    Classes Abstratas  Considereo exemplo anterior: 50 Figura # x: double # y: double + mostraArea() Triangulo + mostraArea() Quadrado + mostraArea() Tal classe é uma forte candidata a ser uma classe abstrata!
  • 51.
    PHP OO –Métodos Abstratos
  • 52.
    Métodos Abstratos  Métodosque possui apenas assinaturas, implementados em classes abstratas;  Não possuem lógica! Apenas assinaturas;  Faz com que as classes-filha sejam obrigadas a definir as implementações dos métodos abstratos;  Impõem o polimorfismo às subclasses!  Usamos a palavra reservada abstract na assinatura de um método para torná-la abstrata; 52
  • 53.
    Métodos Abstratos  Sintaxe- Exemplo: 53 <?php // ... abstract function transferir($conta); // ...
  • 54.
    Métodos Abstratos  Voltandoo exemplo anterior: 54 Figura # x: double # y: double + mostraArea() Triangulo + mostraArea() Quadrado + mostraArea()
  • 55.
    Métodos Abstratos  Considereo exemplo anterior: 55 Figura # x: double # y: double + mostraArea() Triangulo + mostraArea() Quadrado + mostraArea() O método mostraArea() não é genérica o suficiente (não existe uma única forma de se calcular a área) Definida apenas para questões de polimorfismo
  • 56.
    Métodos Abstratos  Considereo exemplo anterior: 56 Figura # x: double # y: double + mostraArea() Triangulo + mostraArea() Quadrado + mostraArea() Tal método é um forte candidato a ser um método abstrato!
  • 57.
  • 58.
    Exercício • Etapa 1– Preparação do Domínio  Crie uma pasta em htdocs chamada abstratos;  Na pasta abstratos, crie uma pasta chamada classes; 58
  • 59.
    Exercício  Etapa 2:Crie as seguintes classes na pasta abstratos/classes : 59 Animal # come: String + habitoAlimentar() Carnivoro + habitoAlimentar() Herbivoro + habitoAlimentar() OBS: Crie os métodos get, set e construtores caso sejam necessários. OBS: O método habitoAlimentar() simplesmente imprime na tela o hábito alimentar de cada animal. Classe abstrata Método abstrato
  • 60.
    Exercício • Etapa 3– Criação do script index.php na pasta abstratos  O script deverá criar um objeto para cada tipo de animal;  Em seguida, o script deverá definir o hábito alimentar do carnívoro para “carne” e do herbívoro para “legumes”;  O script deverá exibir o método alimentar de cada animal; 60
  • 61.
    PHP OO –Classes Finais
  • 62.
    Classes Finais  Classesque não podem ter herdeiros (não podem ser superclasses);  Sintaxe - Exemplo: 62 <?php final class ContaPoupanca extends Conta { // ...
  • 63.
    PHP OO –Métodos Finais
  • 64.
    Métodos Finais  Métodosque não podem ser sobrescritos;  Proíbem que subclasses usem polimorfismo!  Usamos a palavra reservada final na assinatura de um método para impedir que seja sobrescrita; 64
  • 65.
    Métodos Finais  Sintaxe- Exemplo: 65 <?php // ... final function transferir($conta) { // ...
  • 66.
    PHP OO –Encapsulamento
  • 67.
    Encapsulamento  Mecanismo queprovê proteção de acesso aos atributos e métodos de um objeto;  A depender de um projeto de uma classe, certos atributos e métodos devem ser tratados exclusivamente:  Pela classe que os possui;  Pela superclasse e subclasses em uma hierarquia;  Por qualquer classe ou script; 67
  • 68.
    Encapsulamento  Para definira visibilidade dos membros de um objeto, usamos as palavras reservadas public, private ou protected na assinatura de atributos e métodos;  public – Podem ser acessados livremente;  private – Podem ser acessados dentro da própria classe em que foram declarados;  protected – Podem ser acessados dentro da própria classe em que foram declarados e a partir das classes descendentes; 68
  • 69.
    Encapsulamento  Representação UMLpara as visibilidades de atributos e métodos em diagramas de classe:  (+) public;  (-) private;  (#) protected; 69
  • 70.
  • 71.
  • 72.
    PHP OO –Armazenamento de Dados em Classes
  • 73.
    Armazenamento em Classes Os seguintes membros podem ser utilizados para armazenamento de dados em classes:  Constantes;  Atributos Estáticos;  Podem ser acessados diretamente a partir do nome da classe, sem a necessidade de um objeto para tal; 73
  • 74.
    Armazenamento em Classes Sintaxe – Constantes – Exemplo:  Para acessar uma constante de classe...  ... a partir da própria classe: self::Nome;  ... a partir de uma subclasse: parent::Nome;  ... Externamente, fora da hierarquia: Biblioteca::Nome; 74 <?php class Biblioteca { const Nome = “GTK ”; } ?>
  • 75.
    Armazenamento em Classes Sintaxe – Constantes – Exemplo: 75 <?php class Biblioteca { const Nome = “GTK ”; public function imprimeConstante() { echo self::Nome . "<br>"; } } echo Biblioteca::Nome . ‘<br>’; ?>
  • 76.
    Armazenamento em Classes Sintaxe – Atributos Estáticos – Exemplo:  Para acessar um atributo de classe estático...  ... a partir da própria classe: self::$Quantidade ou static::$Quantidade;  ... a partir de uma subclasse: parent::$Quantidade;  ... Externamente, fora da hierarquia: Aplicacao::$Quantidade; 76 <?php class Aplicacao { public static $Quantidade; } ?>
  • 77.
    Armazenamento em Classes Sintaxe – Atributos Estáticos – Exemplo: 77 <?php class Aplicacao { public static $Quantidade; function __construct() { static::$Quantidade++; } } $app1 = new Aplicacao(); echo Aplicacao::$Quantidade . '<br>'; $app2 = new Aplicacao(); echo Aplicacao::$Quantidade . '<br>'; ?>
  • 78.
    PHP OO –Métodos Estáticos
  • 79.
    Métodos Estáticos  Podemser invocados diretamente pelo nome da classe, sem a necessidade de instanciar um objeto;  Também permitem que outras classes possam manipular atributos estáticos privados de uma classe fornecedora;  Usamos a palavra reservada static na assinatura de um método de classe;  Usamos a sintaxe NomeDaClasse::NomeDoMetodo() para executar um método estático; 79
  • 80.
    Métodos Estáticos 80 <?php class Aplicacao{ private static $Quantidade; public function __construct() { static::$Quantidade++; } public static function imprimeContador() { return static::$Quantidade; } } $app1 = new Aplicacao(); echo Aplicacao::imprimeContador() . '<br>'; $app2 = new Aplicacao(); echo Aplicacao::imprimeContador() . '<br>'; ?>
  • 81.
    PHP OO –Interfaces
  • 82.
    Interfaces  “Obriga” aum determinado grupo de classes a ter métodos em comum;  Funciona como uma espécie de contrato que, quando assumido por uma classe, deve ser implementado;  Apenas assinaturas de métodos fazem parte do corpo de interfaces;  As classes que seguem este “contrato” deverão implementar o comportamento dos métodos;  Tal estrutura não possui atributos; 82
  • 83.
    Interface  Usamos apalavra reservada interface na assinatura da classe que funcionará como uma interface;  Usamos a palavra reservada implements na assinatura da classe que implementará uma interface;  Uma classe pode implementar mais de uma interface; 83
  • 84.
    Interface  Sintaxe –Exemplo: 84 <?php interface IMensagem { function mensagem(); } class Aplicacao implements IMensagem { function mensagem() { echo ‘Exemplo interface’; } } ?> << interface >> IMensagem + mensagem()
  • 85.
    Interfaces  Ex: 85 Figura # x:double # y: double Triangulo << interface >> ICalculos + calculaArea(): double + calculaArea(): double Quadrado + calculaArea(): double
  • 86.
  • 87.
    Exercício • Etapa 1– Preparação do Domínio  Crie uma pasta em htdocs chamada contrato;  Na pasta contrato, crie uma pasta chamada classes; 87
  • 88.
    Exercício  Etapa 2- Implemente as classes abaixo na pasta dedicada para tal: 88 Veiculo # nome: String # marca: String # modelo: String getters e setters Carro << interface >> ICaracteristicas + exibeNome() + exibeMarca() + exibeModelo() Moto + exibeNome() + exibeMarca() + exibeModelo() + exibeNome() + exibeMarca() + exibeModelo()
  • 89.
    Exercício • Etapa 3– Criação de um formulário HTML  Crie um formulário HTML que permita ao usuário digitar o nome, marca e modelo de um veículo, além de informar o tipo de veículo;  Método de envio: POST;  Os dados deverão ser submetidos para o script “exibir_veiculo.php”;  Salve o documento HTML na pasta contrato com o nome index.html; 89
  • 90.
    Exercício • Etapa 4– Criação do script exibir_veiculo.php na pasta contrato  O script deverá inicialmente receber os dados submetidos pelo formulário HTML;  Em seguida, o script deverá criar um objeto da classe que representa o veículo selecionado;  Com o objeto criado, os dados enviados a partir do formulário deverão ser submetidos para o mesmo;  O script deverá exibir as observações do veículo; 90
  • 91.
    PDO – PHPData Objects
  • 92.
    PDO – PHPData Objects  Unifica o acesso às diferentes extensões de bancos de dados presentes em PHP;  Provê uma API limpa e consistente, unificando a maioria das características presentes nas extensões de acesso a banco de dados  Unifica a chamada de métodos, graças à orientação a objetos a partir do PHP 5; 92
  • 93.
    PDO – PHPData Objects • Sequência de passos: 1. A aplicação estabelece uma conexão com o SGBD; 2. A aplicação seleciona uma base de dados a ser utilizada durante a conexão; 3. A aplicação executa uma consulta específica (seleção, inserção, remoção...); 4. A aplicação fecha a conexão corrente com o SGBD;
  • 94.
    PDO – PHPData Objects  PDO – Conexão com bancos de dados: 94 Banco String de Conexão SQLite new PDO(‘sqlite: teste.db’); FireBird new PDO(“firebird:dbname=C:base.GDB”, “SYSDBA”, “masterkey”); MySQL new PDO('mysql:host=localhost;dbname=base', 'login', 'senha'); Postgres new PDO('pgsql:dbname=example; user=user; password=senha;host=localhost');
  • 95.
  • 96.
    PDO – Exemplos No phpmyadmin, configure o banco de dados da atividade:  Database: livros  Tabela: famosos  Campos: id (int, auto increment, chave primária) e nome (varchar[100]); 96
  • 97.
    PDO – Exemplos Exemplo 1: Inserindo dados via PDO 97 <?php $conn = new PDO('mysql:host=localhost;dbname=livros', ‘root', ''); $conn->exec("INSERT INTO famosos (nome) VALUES ('Thyago Maia')"); $conn = null; ?>
  • 98.
    PDO – Exemplos Exemplo 2: Listagem via PDO 98 <?php $conn = new PDO('mysql:host=localhost;dbname=livros', ‘root', ''); $result = $conn->query("SELECT id, nome from famosos"); if($result) foreach($result as $row) echo $row['id'] . '-' . $row['nome'] . '<br>'; $conn = null; ?>
  • 99.
    PDO – Exemplos Exemplo 3: Excluindo dados via PDO 99 <?php $conn = new PDO('mysql:host=localhost;dbname=livros', ‘root', 'Unipe'); $conn->exec("DELETE FROM famosos WHERE id = 1"); $conn = null; ?>
  • 100.
  • 101.
    Exercício • Etapa 1– Preparação do Banco de Dados no phpmyadmin  Database: sistema  Tabela: cadastro  Campos: codigo (int, auto increment, chave primária), nome (varchar[100]), telefone (varchar[100]) e email (varchar[100]); 101
  • 102.
    Exercício • Etapa 2– Preparação do Domínio  Crie uma pasta em htdocs chamada sistema; 102
  • 103.
    Exercício • Etapa 3– Criação de um formulário HTML  Crie um formulário HTML que permita ao usuário digitar seu nome, telefone e e-mail;  Método de envio: POST;  Os dados deverão ser submetidos para o script “cadastro.php”;  Salve o documento HTML na pasta sistema com o nome index.html; 103
  • 104.
    Exercício • Etapa 4– Criação do script cadastro.php na pasta sistema  O script deverá inicialmente receber os dados submetidos na etapa anterior;  Em seguida, via PDO, o script deverá inserir os dados no banco de dados;  O script deverá redirecionar o usuário para o script lista_usuarios.php; 104
  • 105.
    Exercício • Etapa 5– Criação do script lista_usuarios.php na pasta sistema – O script deverá exibir todos os cadastros efetuados até o momento, além de disponibilizar um link que permita ao usuário efetuar um novo cadastro; 105
  • 106.
    Exercício • Etapa 6– Testar a aplicação  Abra o navegador de sua preferência e acesse:  http://localhost/sistema ou  http://127.0.0.1/sistema  OBS.: Verifique se o servidor Apache do Xampp está ativo; 106
  • 107.
  • 108.
    Exercício • Etapa 1– Preparação do Banco de Dados no phpmyadmin  Utilizaremos a mesma base criada no exercício anterior; 108
  • 109.
    Exercício • Etapa 2– Preparação do Domínio  Utilizaremos a pasta sistema criada anteriormente; 109
  • 110.
    Exercício • Etapa 3– Criação de um formulário HTML  Utilizaremos o mesmo formulário do exercício anterior; 110
  • 111.
    Exercício • Etapa 4– Criação da classe Cadastro.php na pasta sistema 111 Cadastro -nome: string -telefone: string -email: string +setNome(nome: string) : void +setTelefone(telefone: string) : void +setEmail(email: string) : void +getNome() : string +getTelefone() : string +getEmail() : string +inserir() : void +exibir() :void
  • 112.
    Exercício • Etapa 5– Atualização do script cadastro.php da pasta sistema  O script deverá:  Receber os dados submetidos na etapa anterior;  Instanciar um objeto da classe Cadastro;  Atribuir os dados recebidos para o objeto instanciado;  Executar o método inserir a partir do objeto instanciado;  Executar o método exibir a partir do objeto instanciado;  Disponibilizar um link que permita ao usuário efetuar um novo cadastro; 112
  • 113.
    Exercício • Etapa 6– Testar a aplicação  Abra o navegador de sua preferência e acesse:  http://localhost/sistema ou  http://127.0.0.1/sistema  OBS.: Verifique se o servidor Apache do Xampp está ativo! 113