Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Desenvolvimento Web com PHP

PHP Orientado a Objetos, PDO, MVC
by

Eduardo Mendes de Oliveira

on 27 August 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Desenvolvimento Web com PHP

AGENDA
DEsenvolvimento
WEB
PHP
com
Eduardo Mendes
OBjetos em PHP
Revisão dos conceitos de OO
PHP Orientado a Objetos
PHP Data Objects
MVC
Sessão
Upload de Arquivos
<?php

...

// instancia o objeto
$maria = new Pessoa();

// definição de valores das propriedades
$maria->altura = 1.7;
$maria->idade = 28;

// executa métodos
$maria->setNome('Maria da Silva');
$maria->crescer(0.1);
$maria->envelhecer(1);

?>
Pessoa
+nome: string
+altura: float
+idade: int
+nome: string
+altura: double
+idade: int
Pessoa
Classes em PHP
PDO
PHP DATA Objects
Acesso a banco de dados
mysql_connect('host','usuario','senha');
pg_connect('host=host port=5432 dbname=bd user=usuario password=senha');
ocilogon('usuario','senha', 'bdteste');
mssql_connect("localhost","bd","senha")
PADRONIZAÇÃO
+ PDO
Banco de dados
DRIVER do BANCO
cada fornecedora de banco desenvolve o seu

para trocar de banco troca-se o driver
Habilitação no php.ini
CONFIGURAÇÃO
LINUX
Windows
extension=mysql.so
extension=pgsql.so
extension=pdo_mysql.so
extension=pdo_pgsql.so
extension=php_mysql.dll
extension=php_pgsql.so
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
Orientação a objetos

Suporte à transação

Proteção à SQL Injection

Manipulador de Arquivos
BENEFÍCIOS
5
(ou 4)
"coisas" para
usar um banco de dados

05
Banco

Conexão


Consulta

Resultado
Banco

Conexão

Consulta
04
SELECTs
INSERTS
UPDATES
DELETES
CONEXÃO
mysql
$conn = new PDO(...);
$conn->exec(
[sql:String]
);
$result = $conn->query(
[sql:String]
);
if ($result) {

foreach($result as $linha) {

echo $linha['coluna1'] . ' - ' . $linha['coluna2'] . "<br>\n";
}
}
$conn = new PDO('mysql:host=localhost; dbname=
nomeDoBanco
','
nomeDeUsuario
','
senha
');
TUDO JUNTO
$conn = new PDO('mysql:host=localhost;
dbname=
nomeDoBanco
','
nomeDeUsuario
','
senha
');
$conn->exec([sql:String]);
$conn = null;
try {
} catch(PDOException $e) {
print "Erro!: " . $e->getMessage() . "\n";
die();
}
INSERT
$conn = new PDO('mysql:host=localhost;
dbname=
nomeDoBanco
','
nomeDeUsuario
','
senha
');
$conn->exec(
"INSERT INTO tabela(campo1, campo2 ) VALUES('valor1', 'valor2' )"
);
$conn = null;
try {
} catch(PDOException $e) {
print "Erro!: " . $e->getMessage() . "\n";
die();
}
$conn = new PDO('mysql:host=localhost;
dbname=
nomeDoBanco
','
nomeDeUsuario
','
senha
');
UPDATE
try {
} catch(PDOException $e) {
print "Erro!: " . $e->getMessage() . "\n";
die();
}
$conn->exec(
"UPDATE tabela SET campo1='valor1' campo2='valor2'"
);
$conn = null;
$conn->exec(
"DELETE FROM tabela WHERE id=1"
);
$conn = null;
DELETE
$conn = new PDO('mysql:host=localhost;
dbname=
nomeDoBanco
','
nomeDeUsuario
','
senha
');
try {
} catch(PDOException $e) {
print "Erro!: " . $e->getMessage() . "\n";
die();
}
Select
try {
$conn = new PDO('mysql:host=localhost;
dbname=
nomeDoBanco
','
nomeDeUsuario
','
senha
');

$result = $conn->query("
SELECT campo1, campo2 FROM tabela
");
if ($result) {
foreach($result as $row) {

echo $row['
campo1
'] . ' - ' .
$row['
campo2
'] . "<br/>\n";
}
}
$conn = null;

} catch (PDOException $e) {
print "Erro!: " . $e->getMessage() . "<br/>";
die();
}
?>
Nunca se esqueça de fechar
uma conexão depois de utilizá-la
Mantenha-se
ORGANIZADO -----> 5S
$conn = null;
<?php

// inclui a classe
include 'pessoa.class.php';

// instancia o objeto
$maria = new Pessoa();

// define valor para atributos
$maria->altura = 1.7;
$maria->idade = 28;

// executa métodos
$maria->setNome('Maria da Silva');
$maria->crescer(0.1);
$maria->envelhecer(1);

// imprime o objeto
var_dump($maria);

?>
<?php

// inclui a classe
include 'pessoa.class.php';

// instancia o objeto
$maria = new Pessoa();

// define valor para atributos
$maria->altura = 1.7;
$maria->idade = 28;

// executa métodos
$maria->setNome('Maria da Silva');
$maria->crescer(0.1);
$maria->envelhecer(1);

// imprime o objeto
var_dump($maria);

?>
OBjetos em PHP
são instâncias de uma
<?php

...

// instancia o objeto
$joao = new Pessoa();

// definição de valores das propriedades
$joao->altura = 1.6;
$joao->idade = 71;

// executa métodos
$joao->setNome('João Luiz');
$joao->crescer(0.1);
$joao->envelhecer(1);

?>
class Pessoa {

//os atributos
ou
propriedades
public $nome;
public $altura;
public $idade;
}

?>
deve ser criado o arquivo
pessoa.class.php
<?php
ORIENTAÇÃO A OBJETOs
O que é
um Objeto
?
?
?
?
?
?
?
?
?
?
?
?
O que uma
é classe?
O que é
Orientação
a Objetos
Quais são os
membros
de uma classe
O que é
herança
O que é
superclasse
e subclasse
O que é
hierarquia
de classes
O que é
método
sobrescrito
O que é
encapsulamento
O que é
associação
O que é
construtor
O que é
polimorfismo
Pessoa
+nome: string
+altura: float
+idade: int
}
?>

//definição dos métodos
function setNome($nome) {
$this->nome = $nome;
}

function crescer($centimetros) {
$this->altura += $centimetros;
}

function envelhercer($anos) {
$this->idade += $anos;
}
Classes em PHP
<?php

class Pessoa {
+setNome(string)
+crescer(float)
+envelhecer(int)

//os atributos
ou
propriedades
public $nome;
public $altura;
public $idade;
Construtor em PHP
function __construct([parametros]) { }
<?php class Pessoa {

public $nome;
private $altura;

function __construct($nome) {
$this->nome= $nome;
}

function setAltura($altura) {
$this->altura = $altura;
}
}
$maria = new Pessoa("Maria");
$maria->setAltura(1.7);
parent::
metodoSuperclasse();
Chamada ao método
da superclasse
Exercício de fixação
Obs: Construtores pais não são chamados implicitamente se a classe filha define um construtor.

Para executar o construtor da classe pai, uma chamada a
parent::__construct()
dentro do construtor da classe filha é necessária.
CRUD
INSERIR ALTERAR
objeto tem id?
sim
Não
útil em métodos
sobrescritos
NOVO PROJETO
Consultas que podem ser customizadas com parâmetros
Consultas preparadas
$sql =
'INSERT INTO documentos VALUES(NULL, ?, ?, ?)';
$stmt = $conn->
prepare
($sql);

$stmt->
bindParam
(1, $titulo, PDO::PARAM_STR);

$stmt->
bindParam
(2, $assunto, PDO::PARAM_STR);

$stmt->
bindParam
(3, $disp, PDO::PARAM_BOOL);
PDO::PARAM_BOOL (integer)

PDO::PARAM_NULL (integer)

PDO::PARAM_INT (integer)

PDO::PARAM_STR (integer)

PDO::PARAM_LOB (integer)
Obtendo os dados
da consulta
como Objeto
$objeto = $result->fetch(PDO::FETCH_OBJ);
$array = $result->fetch(PDO::FETCH_ASSOC);
como Array Associativo
Msc Eduardo Mendes de Oliveira
edumendes@gmail.com

Música
Sistemas de Informação
Engenharia de Teleinformática

FA7
Coordenador do DESI
Professor
MVC
Por que este modelo
não "vingou"?
INTERFACE
RECUPERAÇÃO
DE DADOS
REGRAS DE NEGÓCIO
SoC
Separation
of concerns
Parnas (1972)
A melhor maneira
para criar sistemas
gerenciáveis
Modularização
PROBLEMAS
Manutenibilidade
Evolução
Se o video queimar, tem que colocar tudo no conserto
Se tudo está acoplado, como evoluir apenas uma parte?
Model-View-Controller
Descrição
Separa a apresentação e a interação dos dados do sistema,
ou separa a lógica de negócios da apresentação
O Modelo
A visão
O Controle
gerencia os dados do sistema
e as operações relacionadas a eles
gerencia a interação do usuário e repassa
estas interações para o Modelo e para a Visão
define e gerencia como os dados
são apresentados ao usuário
Utilizado quando existem várias maneiras de visualizar e interagir com dados
aplicação
Vantagens
Permite que os dados sejam alterados de forma independente da sua representação, e vice-versa

Apoia a apresentação dos mesmos dados de maneiras diferentes
Pode envolver código adicional e complexidade do código quando o modelo de dados e interações são simples.
DESVantagens
Mapeia as ações do usuário para atualizar o modelo

Seleciona visões
Renderiza o modelo

Solicita alterações no modelo

Envia os eventos do usuário para o controle
Encapsula o estado da aplicação

Notifica a visão de mudanças no estado
Geração de páginas dinâmicas

Gerenciamento de formulários
Lógica de negócios

Acesso ao banco de dados

Entidades da aplicação
Processa a solicitação HTTP

Lógica específica da aplicação

Validação de dados
Descrição
Exemplo
Um sistema de informação baseado em Web
Descrição
Também é usado quando as futuras necessidades de interação e apresentação dos dados são desconhecidos
V
c
M
editar.php
ISão
cada entidade da aplicação será representada por um diretório

as camadas serão representadas por arquivos

cada camada poderá ser representada por mais de arquivo
APLICANDO o MVC*
Existem várias maneiras de aplicá-lo
/documento
controle.php
documento.class.php
listar.php
Full transcript