Buscar

modulo6_php

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Introdução ao PHP
Prof. David Fernandes de Oliveira
Instituto de Computação
UFAM
Arquitetura Cliente/Servidor
• Computador Cliente (frontend):
– Interface com o usuário
– Lê as requisições dos usuários, as submete 
para o servidor; recebe o conteúdo, e então 
apresenta este conteúdo para o usuário
• Computador Servidor (backend):
– Processa as requisições dos usuários
Scripts do Lado Servidor e PHP
• Scripts do lado servidor – projetados para 
executar do lado servidor, fornecendo a lógica 
principal da aplicação
• Hypertext Preprocessor (PHP) é uma 
linguagem do lado servidor que é usada para 
desenvolver Web sites interativos 
– Fácil de aprender
– Incluí paradigma orientado a objetos
– Suporta muitos tipos de bancos de 
dados (MySQL, Oracle, PostgreSQL)
• PHP (continuação):
– PHP é uma linguagem open source
– Não pode ser acessada ou manipulada 
através do browser, como JavaScript
– Existe e executa apenas no servidor, 
onde realiza vários tipos de 
processamentos e acessos a bases de 
dados
Scripts do Lado Servidor e PHP
• Regra geral: Usar scripts do lado cliente para 
lidar com a interface e para pequenos 
processamentos; usar scripts do lado servidor 
para grandes processamentos e acesso a dados
Como um Web server processa um script PHP
Scripts do Lado Servidor e PHP
1
2
3
4
5
6
cadastrarUsuario.php
O Apache pede ao 
módulo PHP para 
interpretar o 
arquivo .php
O PHP pede ao SGBD para 
fazer escritas e leituras no 
Banco de Dados
O SGBD informa ao PHP se 
as requisições foram feitas 
com sucesso ou não
O PHP passa o código HTML 
resultante para o Servidor 
Web
O Apache envia o código 
HTML para o Browser, via 
protocolo HTTP
Scripts do Lado Servidor e PHP
Quem usa PHP?
7
Popularidade do PHP
8
Popularidade do PHP
Popularidade do PHP
LAMP X WAMP
+ + +
=
LAMP
+ + +
=
IDEs
Criando Scripts PHP Simples
• Linguagem embutida – código que é incorporado 
dentro de páginas Web 
• O código PHP é inserido diretamente dentro das páginas 
HTML, como um bloco separado
Criando Scripts PHP Simples
• Linguagem embutida – código que é incorporado 
dentro de páginas Web 
• O código PHP é inserido diretamente dentro das páginas 
HTML, como um bloco separado
Uma página contendo código PHP 
precisa ter extensão .php
Criando Scripts PHP Simples
• Linguagem embutida – código que é incorporado 
dentro de páginas Web 
• O código PHP é inserido diretamente dentro das páginas 
HTML, como um bloco separado
Uma página contendo código PHP 
precisa ter extensão .php
O código PHP nunca é enviado para o 
browser do cliente. Apenas o código 
HTML resultante é enviado.
Blocos de Declaração PHP
• Blocos de declaração de código são seções 
separadas de uma página que são interpretadas 
pela PHP engine
Blocos de Declaração PHP
• Blocos de declaração de código são seções 
separadas de uma página que são interpretadas 
pela PHP engine
Um delimitador é uma sequência especial
de caracteres que são usadas para marcar 
o início e o final de um segmento de código
O delimitador padrão da linguagem PHP é 
<?php e ?> 
Delimitadores Curtos
• Além do delimitador padrão, também é possível 
usar delimitadores curtos, que no PHP é <? e ?>
• No entanto, os delimitadores curtos podem ser 
desabilitados no arquivo de configuração do PHP 
– Opção short_open_tag do arquivo php.ini
– No Ubuntu, o php.ini é armazenado em 
/etc/php5/apache2/php.ini
Mostrando os Resultados do Script
• Para enviar para o browser os resultados do 
script PHP, é preciso usar o comando echo() 
ou print()
Mostrando os Resultados do Script
• Para enviar para o browser os resultados do 
script PHP, é preciso usar o comando echo() 
ou print()
Os comandos echo() e print()criam 
novos textos na página HTML que é 
enviada para o cliente
Mostrando os Resultados do Script
• É possível ter múltiplos blocos de código PHP
Sensitividade de Case no PHP
• A maioria das construções PHP são case 
insensitive
Servidor Web Imbutido
• A versões PHP 5.4+ já vêm com 
servidores Web imbutidos
Comentários em Código PHP
• Comentários em Linhas ignoram textos 
em uma única linha de código
– Adicione // ou # antes do texto
• Comentários em Blocos ignoram 
múltiplas linhas de código 
– Adicione /* antes da primeira linha
– E */ depois da última linha
Variáveis e Constantes
• Identificadores das variáveis:
– Precisam começar com um cifrão ($)
– São case sensitive
• Use a função define() para criar 
constantes
– define("CONSTANT_NAME", value);
– define("MAIORIDADE", 18);
Tipos de Dados
• Os tipos primitivos da linguagem PHP são:
– Números inteiros
– Números de ponto-flutuante
– Booleanos
– Strings
– NULL
Tipos de Dados Dinâmicos
• A tipagem do PHP é dinâmica, isto é, o tipo de 
uma variável pode mudar ao longo do script
Tipos de Dados
• A linguagem PHP ainda suporta:
 
– Tipo de dado resource – um tipo de variável 
especial que referencia um recurso externo, tal 
como um arquivo XML ou um banco de dados
 
– Tipo de dado array – que contém múltiplos 
valores de um mesmo tipo 
 
– Tipo de dado objeto – que contém tipos de 
dados complexos
Arrays Ordenados
• Na linguagem PHP, os arrays ordenados 
podem ser definidos de diferentes formas:
Arrays Associativos
• Arrays Associativos são conjuntos de chaves 
e valores, onde cada valor é acessado através 
de uma chave associada
Arrays Associativos
Podemos usar o comando
foreach para percorrer
os elementos de um array
associativo
Função count()
• Use a função count() para identificar o 
número de elementos do array
Funções print_r e var_dump()
• Úteis para imprimir informações sobre os dados 
de um array
Operadores Aritméticos Unários
• Os operadores unitários de incremento (++) e 
decremento (--) podem ser usados como 
operadores prefixos ou sufixos
Operadores de Atribuição
 
Operadores de Comparação
 
 
Operadores Lógicos
• Possuem a mesma estrutura das linguagens C, 
Java e JavaScript
Comandos if..else
• Possuem a mesma estrutura das linguagens C, 
Java e JavaScript
Comandos while
• Possuem a mesma estrutura das linguagens C, 
Java e JavaScript
Comandos do..while
• Possuem a mesma estrutura das linguagens C, 
Java e JavaScript
Comandos for
Definindo Funções
• Usamos a palavra chave function para 
definir uma nova função:
Escopos de Variáveis
• Variáveis globais são declaradas fora das funções 
e podem ser acessadas por qualquer função 
através da palavra chave global
Escopos de Variáveis
• Variáveis globais são declaradas fora das funções 
e podem ser acessadas por qualquer função 
através da palavra chave globalAs variáveis globais também podem ser
acessadas através do vetor associativo
$GLOBALS
Por exemplo, $GLOBALS[“instituto”]
Variáveis Superglobais
• A variável $GLOBALS pertence a um tipo especial 
de variáveis chamado superglobal
• Essas variáveis são criadas automaticamente pelo 
PHP, e possuem várias informações de ambiente 
• $_POST – array superglobal que permite a leitura de 
variáveis passadas através de um formulário HTML 
usando método POST
• $_GET – array superglobal que permite a leitura de 
variáveis passadas na URL através de um formulário 
HTML usando método GET
Variáveis Superglobais
Exercício: criar um 
script PHP seja 
capaz de receber os 
dados do formulário 
ao lado, e criar uma 
página para 
imprimir seus 
dados.
github
PHP1
Meu Primeiro Script PHP
• É possível importar arquivos de bibliotecas e funções 
usando os comandos include
ou require 
– include – caso o arquivo não seja encontrado, é 
retornado apenas um warning 
– require – caso o arquivo não seja encontrado, é 
retornado um erro fatal 
Importação de Arquivos
• É possível importar arquivos de bibliotecas e funções 
usando os comandos include ou require 
– include – caso o arquivo não seja encontrado, é 
retornado apenas um warning 
– require – caso o arquivo não seja encontrado, é 
retornado um erro fatal 
Importação de Arquivos
• Um sistema de três camadas é um 
sistema cliente/servidor com três 
peças distintas:
 
– Camada cliente, ou camada de interface, é o 
browser Web
– Camada de processamento, ou camada 
intermediária, recebe e processa as requisições 
dos usuários
– Camada de banco de dados, contém os 
dados necessários para atender as requisições 
de usuários
Arquitetura Cliente/Servidor
Arquitetura Cliente/Servidor
Arquitetura Cliente/Servidor
1
6
25
3
4MySQL Server
Browser Web Server
PHP Engine
Banco de Dados MySQL
• Banco de dados Relacional (baseado em 
tabelas relacionadas)
Um Banco de Dados é 
composto basicamente 
por tabelas e 
relacionamentos.
As chaves primárias e 
estrangeiras são 
utilizadas de forma a 
permitir que cada 
registro possa ser
identificado e 
relacionado com outras 
informações em outras 
tabelas.
Banco de Dados MySQL
• Comandos básicos de SQL:
– CREATE
• DATABASE
• TABLE
– USE
– SELECT
– INSERT INTO
– UPDATE
– DELETE
– SHOW
• DATABASES
• TABLES
• FIELDS FROM
Banco de Dados MySQL
Comando CREATE DATABASE
Utilizado para a criação de um novo banco
mysql> CREATE DATABASE ‘AGENDA’;
Query OK, 1 row affected (0.03 sec)
mysql>
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| agenda |
| mysql |
+--------------------+
2 rows in set (0.00 sec)
mysql>
Comando SHOW DATABASE
Utilizado para mostrar as tabelas de um banco de dados
mysql> use agenda
Database changed
mysql>
mysql> CREATE TABLE contatos(
 -> codigo int not null,
 -> nome varchar(200) not null,
 -> telefone varchar(20) not null,
 -> email varchar(150),
 -> aniversario date not null default ‘0000-00-00’)
 -> ;
Query OK, 0 rows affected (0.25 sec)
mysql>
Banco de Dados MySQL
Comando USE DATABASE
Utilizado para acessar um novo banco
Comando CREATE TABLE
Utilizado para criar uma nova tabela no banco de dados 
mysql> INSERT INTO contatos VALUES (1,'Maurício', '3124-7200', 
'tuska@pucsp.br', '1970-05-24');
Query OK, 1 row affected (0.14 sec)
mysql>
mysql> SELECT * FROM contatos;
+--------+----------+-----------+----------------+-------------+
| codigo | nome | telefone | email | aniversario |
+--------+----------+-----------+----------------+-------------+
| 1 | Maurício | 3124-7200 | tuska@pucsp.br | 1970-05-24 |
+--------+----------+-----------+----------------+-------------+
1 row in set (0.28 sec)
mysql>
Comando INSERT INTO
Utilizado para inserir uma nova entrada em uma tabela
Comando SELECT
Utilizado para fazer uma consulta em um banco de dados
Banco de Dados MySQL
mysql> UPDATE contatos SET nome='Maurício Nacib Pontuschka' WHERE codigo=1;
Query OK, 1 row affected (0.13 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM contatos;
+--------+---------------------------+-----------+----------------
+-------------+
| codigo | nome | telefone | email | 
aniversario |
+--------+---------------------------+-----------+----------------
+-------------+
| 1 | Maurício Nacib Pontuschka | 3124-7200 | tuska@pucsp.br | 1970-05-
24 |
+--------+---------------------------+-----------+----------------
+-------------+
1 row in set (0.00 sec)
mysql>
Comando UPDATE
Utilizado para atualizar informações de uma tabela
Banco de Dados MySQL
mysql> DELETE FROM contatos WHERE codigo=1;
Query OK, 1 row affected (0.30 sec)
mysql> SELECT * FROM contatos;
Empty set (0.00 sec)
mysql>
Comando DELETE
Utilizado para remover entradas de uma tabela
Banco de Dados MySQL
mysql> SHOW TABLES;
+------------------+
| Tables_in_agenda |
+------------------+
| contatos |
+------------------+
1 row in set (0.00 sec)
mysql>
Comando SHOW TABLES
Mostra as tabelas de um banco de dados
Banco de Dados MySQL
mysql> SHOW FIELDS FROM contatos;
+-------------+--------------+------+-----+------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+------------+-------+
| codigo | int(11) | NO | | | |
| nome | varchar(200) | NO | | | |
| telefone | varchar(20) | NO | | | |
| email | varchar(150) | YES | | NULL | |
| aniversario | date | NO | | 0000-00-00 | |
+-------------+--------------+------+-----+------------+-------+
5 rows in set (0.33 sec)
mysql> exit
Bye
Comando SHOW FIELDS
Mostra os campos de uma tabela
Banco de Dados MySQL
Exercício
• Instalar o PhpMyAdmin no computador
• Criar o banco Tetris, que será usado na aplicação 
do trabalho final da disciplina
• Nesse banco, crie uma tabela mensagem com a 
estrutura da imagem abaixo
Banco da Aplicação Tetris
• Você também pode usar o MySQL Workbench, 
para gerar o banco e importá-lo no PhpMyAdmin
• PDO – PHP Data Objects – é uma camada de 
acesso a base de dados que provê uma maneira 
uniforme de acessar bases de dados diferentes
Acesso ao Banco via PDO
PDO
• Para se conectar ao banco usando PDO, informamos 
o driver, no caso o mysql, o host, o nome do banco de 
dados, nome de usuário e senha
Acesso ao Banco via PDO
• Para se conectar ao banco usando PDO, informamos 
o driver, no caso o mysql, o host, o nome do banco de 
dados, nome de usuário e senha
Acesso ao Banco via PDO
• Algumas razões de problemas para se conectar 
a um determinado banco de dados:
– O servidor do banco de dados não está rodando
– Privilégios insuficientes do usuário
– Nome de usuário e/ou senha inválido
• Para se conectar ao banco usando PDO, informamos 
o driver, no caso o mysql, o host, o nome do banco de 
dados, nome de usuário e senha
Acesso ao Banco via PDO
• Algumas razões de problemas para se conectar 
a um determinado banco de dados:
– O servidor do banco de dados não está rodando
– Privilégios insuficientes do usuário
– Nome de usuário e/ou senha inválido
Para fechar uma conexão PDO aberta, 
basta abribuir NULL ao resource do banco
<?php
$conn = NULL;
?>
• Comandos SQL podem ser feitos através dos 
comandos prepare, bindValue e execute
Comandos SQL via PDO
• Comandos SQL podem ser feitos através dos 
comandos prepare, bindValue e execute
Comandos SQL via PDO
PREPARE [BIND]* EXECUTE
Comandos SQL via PDO
• Uma declaração prepare é uma declaração SQL pré-
compilada que pode ser executada múltiplas vezes 
apenas enviando os dados para o servidor
Comandos SQL via PDO
• Uma declaração prepare é uma declaração SQL pré-
compilada que pode ser executada múltiplas vezes 
apenas enviando os dados para o servidor
• Além de comandos INSERT, pode-se usar todos 
os comandos SQL, tais como DELETE, 
UPDATE, SELECT, DROP, etc.
Evitando SQL Injections
• Inserção de comandos SQL para serem rodados no 
banco sem o conhecimento de seu administrador
Evitando SQL Injections
• Inserção de comandos SQL para serem rodados no 
banco sem o conhecimento de seu administrador
Evitando SQL Injections
• Inserção de comandos SQL para serem rodados no 
banco sem o conhecimento de seu administrador
SELECT * FROM user WHERE
login="andre"; DROP TABLE user ; --"
Evitando SQL Injections
• Inserção de comandos SQL para serem rodados no 
banco sem o conhecimento de seu administrador
SELECT * FROM user WHERE login="andre"; DROP TABLE user ; --"
Usamos o bindValue para atribuir as variáveis ao resto da 
query. Se alguma irregularidade existir, o MySQL não 
concluirá a query. 
$stmt = $conn->prepare('SELECT * FROM user WHERE login=:login');
$stmt->bindValue(":login" , $_POST['login']);
$stmt->execute();
Comandos SQL via PDO
• Para recuperar registros do banco, usamos o comando 
prepare e execute seguido de comandos fetch
Comandos SQL via PDO
• Para obter as linhas como objetos, usamos o método 
fetch com o parâmetro PDO::FETCH_OBJ
Comandos SQL via PDO
• O método rowCount mostra a quantidade de registros 
retornada por um método execute
Exercício: criar 
um script PHP 
que seja capaz de 
receber os dados 
do formulário ao 
lado, inseri-los 
em uma tabela 
em um banco de 
dados, e depois 
imprimir esses 
dados no browser 
github
PHP2
Meu Segundo Script PHP
Cookies e sessões
• HTTP é um protocolo que não mantém estado, 
isto é não mantém uma conexão
• Cada pedido que um browser faz ao servidor 
web é independente do pedido anterior
• Muitas aplicações necessitam manter o estado 
ao saltar de uma página para outra
– Exemplo: carrinho de compras em sites de 
comércio eletrônico
Aplicações que mantêm estado
• As aplicações possuem duas opções para 
manter informações de estado dos clientes
– Podem guardar informações de estado no lado 
cliente (browser) utilizando cookies
– Podem guardar informações de estado no lado 
servidor web utilizando sessões
Cookies
• Cookies são variáveis enviadas pelo servidor 
web para o browser através do protocolo HTTP
– Ficam armazenados no lado cliente
– São enviados em futuros pedidos do browser 
para esse servidor web
Cookies
Limitações dos cookies
• Um browser pode guardar até 50 cookies 
enviados de um determinado domínio
• Cookies não podem ter mais do que 4KB
• Usuários podem desativar cookies no browser
Função setcookie
• Os cookies são criados no cliente (browser), a 
pedido do servidor Web
• Para requisitar a criação de um cookie no cliente, 
usamos uma função PHP chamada setcookie
setcookie(name, value, expire, path);
setcookie('username', 'hannah', time() + 60 * 
60 * 24 * 7, '/');
Acessando um Cookie
• Os cookies ficam disponíveis em PHP através 
do array associativo $_COOKIE
• Ler um cookie é um tarefa tão simples quanto 
acessar o array de sistema $_COOKIE
 
• Note que um cookie só pode ser lido depois que 
ele foi enviado pelo browser Web
if (isset($_COOKIE['username'])) {
$username = $_COOKIE['username'];
}
Acessando um Cookie
• No exemplo abaixo, usamos a função setcookie 
para criar o cookie cookie_teste, caso ele ainda 
não tenha sido criado
Acessando um Cookie
• No exemplo abaixo, usamos a função setcookie 
para criar o cookie cookie_teste, caso ele ainda 
não tenha sido criado
Ao acessar a página pela primeira vez,
aparece a mensagem: Você nunca 
passou por aqui.
Acessando um Cookie
• No exemplo abaixo, usamos a função setcookie 
para criar o cookie cookie_teste, caso ele ainda 
não tenha sido criado
Ao acessar a página pela primeira vez,
aparece a mensagem: Você nunca 
passou por aqui.
Podemos ver a requisição de criação de
um cookie nas ferramendas de 
desenvolvedores dos browsers
Acessando um Cookie
• No exemplo abaixo, usamos a função setcookie 
para criar o cookie cookie_teste, caso ele ainda 
não tenha sido criado
Ao acessar a página pela primeira vez,
aparece a mensagem: Você nunca 
passou por aqui.Ao acessar a página novamente…
Apagando um Cookie
• Para apagar um cookie, é preciso usar a função 
setcookie com os mesmos parâmetros, mas com 
a data no passado
• Desta forma, para apagar o cookie gerado pelo 
comando abaixo
• é preciso usar um comando similar ao abaixo:
setcookie('username', 'Hannah', time() - 
2592000, '/');
setcookie('username', 'Hannah', time() + 60 * 
60 * 24 * 7, '/');
Sessões
• Através de sessões podemos armazenar 
informações de estado (variáveis) no servidor
• Em vez do browser guardar informações sobre 
várias variáveis, guarda apenas um session id
• Este session id permite acesso às variáveis 
associadas à sessão
Sessões
 start.php
 Cookie:P
HPSESSID
=1234
 PHPSESSID=1234
 PHPSESSID=1234
Bruna's Session: 1234
Session variables: 
Start=10:15am
Count=12
Current_order=$45.60
Sessões em PHP
• A função session_start() cria uma nova sessão 
ou identifica uma sessão já estabelecida.
• Quando um script PHP chama session_start() 
pela primeira vez, é gerado um session id.
• Por padrão, este session id é enviado como cookie 
para o browser com o nome de PHPSESSID
• O session id é uma string aleatória de 32 digitos 
hexadecimais 
– Ex: fcc17f071bca934ae2f24f290343c3b7
Sessões em PHP
• Depois de usar session_start(), podemos 
guardar ou acessar variáveis de sessão disponíveis 
no array associativo
– Ex: $_SESSION["start"] = "10:15am";
• Uma vez registadas, as variáveis ficam disponíveis 
para todos os scripts que chamarem a função 
session_start()
• No exemplo, start é uma variável de sessão 
armazenada no servidor com o valor 10:15am
Sessões em PHP
• Variáveis podem ser removidas da sessão 
atribuindo-lhes o valor FALSE
– $_SESSION["start"] = FALSE;
• A função session_id() devolve o “session id" da 
sessão.
• session_destroy() elimina todas as variáveis 
associadas à sessao.
Sessões em PHP
• O exemplo abaixo demonstra o uso de sessões 
para guardar variáveis de estado no servidor Web
Sessões em PHP
• O exemplo abaixo demonstra o uso de sessões 
para guardar variáveis de estado no servidor Web
Podemos ver a requisição de criação do
cookie PHPSESSID nas ferramendas de 
desenvolvedores dos browsers
Sessões em PHP
• O exemplo abaixo demonstra o uso de sessões 
para guardar variáveis de estado no servidor Web
Ao acessar a página novamente….
Sessões em PHP
• O exemplo abaixo demonstra o uso de sessões 
para guardar variáveis de estado no servidor Web
Ao acessar a página mais uma vez, 
alguns minutos depois….
Armazenando Usernames e Senhas
• Obviamente o banco de dados é o meio mais 
óbvio para armazenar usernames e senhas
• No entanto, as senhas devem ser armazenadas 
de forma criptografada
– Para evitar que um hacker que obtenha acesso 
ao banco tome posse das senhas
• Um mecanismo geralmente adotado é o uso de 
funções de conversão de mão-única
Armazenando Usernames e Senhas
• Uma função de mão-única amplamente adotada 
é a MD5
• Você passa uma string para a função e ela te 
retorna um valor hexadecimal de 32 caracteres:
$token = md5('mypassword');
• Neste exemplo, a variável $token recebe da 
função md5 o valor:
34819d7beeabb9260a5c854bc85b3e44
Armazenando Usernames e Senhas
• Uma função ainda mais seguda é a sha1, que 
retorna um valor hexadecimal de 40 caracteres
• Infelizmente, as funções md5 e sha1 não são 
suficientes para garantir a segurança das senhas
– Isso porque são suscetíveis a ataques de força bruta, 
que usam listas de valores md5 ou sha1 conhecidos
Armazenando Usernames e Senhas
• Para contornar isso, é possível usar uma técnica 
conhecida como salting
• Salting se refere simplesmente a adição de 
strings à senha a ser criptografada, antes de usar 
a função MD5:
$senha = 'mypassword'
$token = md5('hQb%6'.$senha.'cG*l');
Exercício: criar 
uma página de 
login, para que 
apenas usuários 
logados tenham 
permissão de 
acesso à página 
ao lado. Para 
manter a
simplicidade, 
permitir apenas o 
acesso do usuário 
com username 
demo, e senha 
demo.
Meu Terceiro Script PHP
github
PHP3
Programação Orientada a Objetos
 O Yii é um framework orientado a objetos, de forma que para 
aprender sobre esse framework, é necessário conhecer OOP
 Usar OOP significa organizar sua aplicação como uma coleção 
de objetos que incorporam estrutura de dados e um conjunto 
de operações que manipulam estes dados
Programação Orientada a Objetos
 A classe é uma estrutura estática utilizada para 
descrever objetos
― A classe é um modelo (template) para criação de objetos
 Um grupo de objetos é descrito por uma classe, e 
um objeto é uma instância de uma classe
 Exemplo:
― Classe: Fatura / Objeto: Fatura no. 5470
― Classe: Pessoa / Objeto: João, Maria, etc...
Programação Orientada a Objetos
 Propriedades são atributos, características de um 
objeto, que definem a identidade do objeto
― Exemplo: Um ser humano é definido por um conjunto de 
atributos: físicos (altura, cor da pele, algura, cor do cabelo), 
psicológicos (personalidade, humor, empatia), de trabalho 
(capacidade, especialização, criatividade), dentre outros
Propriedades
 Os métodos são operações que definem o 
comportamento de um objeto
 Os métodos definem como o objeto irá se relacionar 
com o mundo externo
 É por meio de um método, que solicitamos que um 
objeto faça algo
Métodos
Definindo uma classe
Atributos
Método
Método
Método
Instanciando objetos
Novo objeto
 Um construtor é um método especial utilizado para 
definir o comportamento inicial de um objeto
― O método construtor é executado automaticamente quando 
criamos um objeto por meio do operador new
 Um método destrutor ou finalizador é executado 
quando o objeto é desalocado da memória
― Ou seja, quando atribuímos o valor NULL ao objeto, quando 
utilizamos a função unset() sobre o mesmo ou, em última 
instância, quando o programa é finalizado
Construtores e Destrutores
Construtores e Destrutores
Construtor
Destrutor
Construtores e Destrutores
 A proteção de acesso ao conteúdo de um objeto se dá 
por meio de mecanismos de encapsulamento
― O encapsulamento visa separar os aspectos externos de um 
objeto dos detalhes internos daquele objeto
― É uma forma de proteger os atributos, evitando que estes 
sejam manipuladas indevidamente
Encapsulamento
Encapsulamento
Encapsulamento
Tipos de Visibilidade:
PRIVATE: Somente a própria classe
PROTECTED: Classe e descendentes
PUBLIC: De qualquer ponto
 Um relacionamento permite que um objeto possua uma 
referência à outro objeto, podendo visualizar seus 
atributos ou mesmo acionar uma de suas funcionalidades
 A forma mais comum de implementar um relacionamento 
é ter um objeto como atributo de outro
Relacionamento
Relacionamento
Relacionamento
 Uma herança é um tipo de relacionamento que permite 
especializar uma classe, criar versões refinadas dela
 Na herança, as classes são organizadas em hierarquias
 A herança é uma forma de reutilizar componentes de 
software aperfeiçoando-os ou adicionando características 
específicas
Herança
 A herança permite o compartilhamento de atributos e 
métodos entre as classes de uma hierarquia
 Cada subclasse herda todas as propriedades (atributos e 
métodos) de suas ancestrais
 Uma subclasse pode estender ou redefinir a estrutura 
e/ou o comportamento de sua super classe
― Leia-se um objeto – é tipo de – outro objeto
 É um poderoso instrumento de reusabilidade, pois
― Permite que atributos e operações comuns à hierarquia 
sejam especificados apenas uma vez
― Permite que novas classes sejam criadas contendo apenas a 
diferença entre ela e a classe-pai
Herança
Herança
Uma classe abstrata não pode ser 
instanciada diretamente
Herança
Uma classe final não 
pode ser extendida
Herança
Uma classe final não 
pode ser extendida
É possível executar um método da classe extendida
através palavra chave parent:
<?php
class Foo {
 public function exemplo() {}
}
class Bar extends Foo {
 public function exemplo() {
 parent::exemplo(); 
 }
}
Chama da classe pai
Sistema OO
 Um sistema OO é modelado, implementado e 
efetivamente funciona como um conjunto de objetos que 
interagem entre si.
Namespaces
 Conforme cresce uma aplicação PHP, aumenta o risco de 
usarmos nomes de funções ou classes já existentes
― Problema aumenta quando usamos componentes de terceiros
― Por exemplo, o que fazer se cada um desses componentes 
implementarem a classe User ou Database?
 Até a versão 5.2 do PHP, a única solução era a adoção 
de longos nomes de funções e classes
― Por exemplo, o Wordpress usava prefixos WP_ para 
cada função ou classe
― O Zend usava nomes muito descritivos:
 Zend_Search_Lucene_Analysis_Analyzer_Com
mon_Text_CaseInsensitive
Namespaces
Namespaces
 O problema de colisões de nomes pode ser resolvido 
com namespaces
 Cada namespace fornece um contexto para o nome de 
uma classe ou função
 Para criar um namespace, basta inserir uma declaração 
de namespace na primeira instrução do arquivo PHP
Namespaces
 O problema de colisões de nomes pode ser resolvido 
com namespaces
 Cada namespace fornece um contexto para o nome de 
uma classe ou função
 Para criar um namespace, basta inserir uma declaração 
de namespace na primeira instrução do arquivo PHP
A partir deste momento, podemos instanciar 
um novo objeto da classe User de 
Componente_1 deta forma:
 
$user = new \Componente_1\User();
Namespaces
 Também é possível criar hierarquias de namespaces, 
seguindo uma estrutura semelhante às hierarquias de 
diretórios dos sistemas operacionais
Namespaces
Namespaces
 Uma característica importante das namespaces é a 
possibilidade de importar e atribuir apelidos
 A palavra-chave use é utilizada para importar classes ou 
namespaces através de seus nomes
 Para adicionar apelidos às classes ou namespaces, 
utilizamos a palavra-chave as
Namespaces
	Chapter 1 Introduction to Web Development PHP Programming with MySQL
	Client/Server Architecture (continued)
	Server-Side Scripting and PHP
	Server-Side Scripting and PHP (continued)
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Creating PHP Code Blocks
	Slide 17
	Short PHP Script Delimiters
	Displaying Script Results
	Slide 20
	Slide 21
	Case Sensitivity in PHP
	Slide 23
	Adding Comments to a PHP Script (continued)
	Using Variables and Constants
	Working with Data Types
	Dynamic Typing
	Working with Data Types (continued)
	Slide 29
	Slide 30
	Slide 31
	count() Function
	print_r(), var_export(), and var_dump() Functions
	Arithmetic Unary Operators
	Assignment Operators (continued)
	Comparison and Conditional Operators (continued)
	Logical Operators
	Statements (4)
	Slide 39
	Slide 40
	Slide 41
	Defining Functions
	Understanding Variable Scope
	Slide 44
	Using Autoglobals
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65
	Slide 66
	Slide 67
	Slide 68
	Slide 69
	Slide 70
	Slide 71
	Slide 72
	Slide 73
	Slide 74
	Slide 75
	Slide 76
	Slide 77
	Slide 78
	Slide 79
	Slide 80
	Slide 81
	Slide 82
	Slide 83
	Slide 84
	Slide 85
	Slide 86
	Slide 87
	Slide 88
	Slide 89
	Slide 90
	Slide 91
	Slide 92
	Slide 93
	Slide 94
	Slide 95
	Slide 96
	Slide 97
	Slide 98
	Slide 99
	Slide 100
	Slide 101
	Slide 102
	Slide 103
	Slide 104
	Slide 105
	Slide 106
	Slide 107
	Slide
108
	Slide 109
	Slide 110
	Slide 111
	Slide 112
	Slide 113
	Slide 114
	Slide 115
	Slide 116
	Slide 117
	Slide 118
	Slide 119
	Slide 120
	Slide 121
	Slide 122
	Slide 123
	Slide 124
	Slide 125
	Slide 126
	Slide 127
	Slide 128
	Slide 129
	Slide 130
	Slide 131
	Slide 132
	Slide 133
	Slide 134
	Slide 135

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando