Apostila PHP
Apostila PHP
AO
PHP
Orientado a Objetos
Introdução a Linguagem de Programação PHP
Sumário
Prefácio.....................................................................................................5
Capitulo 0 – Bootstrap................................................................................6
0.1 - Bootstrap? Diabéisso?........................................................................6
0.2 – Grid e Responsividade........................................................................7
0.3 - Componentes......................................................................................8
0.3.1 - Buttons...................................................................................8
0.3.2 – Ícones....................................................................................9
Capítulo 1 - Lógica de Programação..........................................................11
1.1 -
Noções de Lógica..............................................................................11
1.2 -
O que é Lógica..................................................................................11
1.3 -
A real lógica do dia a dia..................................................................12
1.4 -
Lógica de Programação.....................................................................13
1.5 -
O que é um algoritmo.......................................................................14
1.6 -
Porque é importante construir um algoritmo....................................15
1.7 -
Maneiras de Representar um algoritmo............................................15
1.7.1 - Descrição Narrativa..............................................................15
1.7.2 - Fluxograma Convencional....................................................16
1.7.3 - Pseudocódigo.......................................................................17
1.8 – Exercícios.........................................................................................18
Capítulo 2 – Introdução ao PHP.................................................................21
2.1 - O que é PHP e um pouco da história.................................................21
2.2 - O que precisa pra desenvolver em PHP – Instalação........................23
2.2.1 – Instalação Apache...............................................................24
2.2.2 – Instalação PHP.....................................................................25
2.3 - Características do PHP......................................................................26
2.4 - Saída de Dados.................................................................................27
2.4.1 - echo.....................................................................................27
2.4.2 - print.....................................................................................27
2.5- Comentários......................................................................................28
2.6 – Estrutura de Dados...........................................................................28
2.6.1 – Tipos primitivos de dados....................................................29
2.6.3 - Exercicios.............................................................................29
2.6.3.1 - Práticos......................................................................30
2.7 - Variáveis...........................................................................................31
2.7.1 – Algumas regras sobre variáveis...........................................31
2.7.2 – Tipos de Variáveis................................................................34
2.7.2.1 - Boolean(lógico)..........................................................34
2.7.2.2 – Int (inteiro)................................................................35
2.7.2.3 – Float(Real).................................................................35
2.7.2.4 – String(cadeia de caracteres).....................................35
2.7.2.5 – Array(Matrizes)..........................................................36
2.7.2.6 – Object(Objeto)...........................................................36
2.7.2.7 – Resource(Recurso)....................................................36
2.7.2.8 - Null(Nulo)...................................................................36
2.7.3 - Conversão de Variáveis........................................................36
2.7.4 - Exercícios.............................................................................38
2.8 - Constantes........................................................................................39
2.8.1 – Constantes Pré-definidas.....................................................39
2.8.2 – Definindo Constantes..........................................................39
2.8.3 - Exercícios.............................................................................40
2.9 - Arrays...............................................................................................40
2.9.1 – Criando array Unidimensional.............................................41
2.9.2 - Criando Array Associativo....................................................42
2.9.3 - Arrays Multidimensionais.....................................................43
2.9.4 - Exercícios.............................................................................45
2.10 - Operadores.....................................................................................45
2.10.1 – Operadores de String.........................................................46
2.10.2 - Operadores Matemático s..................................................46
2.10.2.1 – Operadores Aritméticos..........................................46
2.10.2.2 - Atribuição................................................................47
2.10.2.3 - Operadores de Incremento e Decremento...............49
2.10.3 – Operadores Relacionais.....................................................50
2.10.4 – Operadores Lógicos ou Booleanos.....................................51
2.10.5 – Precedência de Operadores...............................................54
2.10.6 – Exercícios...........................................................................55
2.11 - Estruturas de Controle....................................................................57
2.11.1 – Estrutura Sequencial.........................................................57
2.11.2 – Estruturas de Seleção/Decisão..........................................57
2.11.2.1 - Simples(IF)...............................................................58
2.11.2.2 - Composta(IF-ELSE)..................................................58
2.11.2.3 - Encadeada(IF-ELSE-IF-IF).........................................59
2.11.2.4 - Múltipla Escolha(SWITCH-CASE)..............................59
2.11.2.5 - Exercícios.................................................................61
2.11.3 - Estruturas de Repetição.....................................................61
2.11.3.1 - Condição no Início(WHILE).......................................62
2.11.3.2 - Condição no Final(DO-WHILE)..................................63
2.11.3.3 - Variável de Controle(FOR).......................................63
2.11.3.4 – Exercícios................................................................64
2.11.3.5 - Percorrer Arrays(Foreach)........................................65
2.11.4 - Break..................................................................................65
2.11.5 - Continue.............................................................................66
2.11.6 - Exercícios...........................................................................68
Capítulo 3 – Programando em PHP............................................................70
3.1 - Interação PHP – HTML.......................................................................70
3.1.1 - Revisão HTML - Formulários.................................................70
3.1.1.1 - Elementos de um formulário.....................................70
3.1.2 - Recebendo dados de Formulários($_GET - $_POST).............72
3.1.2.1 – Método GET...............................................................73
3.1.2.2 – Método POST.............................................................74
3.1.3 - Exercícios.............................................................................75
3.2 - Especialidades do PHP......................................................................76
3.2.1 - Functions..............................................................................76
3.2.1.1 – Declarando uma função............................................76
Prefácio
Olá Jovem, seja bem vindo(a)!
Esta apostila foi criada para ser utilizada na aprendizagem em lógica voltada
para programação WEB usando a linguagem PHP Orientado a Objetos e Banco
de Dados Relacioal, salientando que a mesma foi adaptada e finalizada
baseando-se nas apostilas do Projeto e-Jovem.
A mesma foi elaborada com o intuito de enriquecer cada vez mais aqueles que
buscam o sucesso profissional ou até mesmo pessoal, apresentamos um
material dividido em 10 capítulos, desde lógica de programação, princípios
básicos até os conceitos mais avançados dentro de um contexto lógico como
Orientação a Objetos e Banco de Dados Relacional, levando ao futuro JEDI, uma
base média para programação WEB ou em outras linguagens.
Esperamos que esse material seja um contribuinte para todos aqueles que
procuram a força e o poder supremo da Programação, e que possam aprender
de forma dedicada, e que principalmente tenham um significado importante
para a criação e desenvolvimento de seres com o poder sem limites.
Capitulo 0 – Bootstrap
Pronto, com isso basta agora usar as classe do Bootstrap e usar sua
criatividade.
isso em código é bem simples, supondo que você queira uma linha com 3
colunas, uma de 3, uma 4, com isso já dá 3 + 4 = 7, então faltam 5 pra
completar a linha(12).
Agora, perceba a classe que coloquei nas div's, col significa collumn, ou seja,
coluna, o último digito significa o tamanho da div em colunas, e o lg no meio
significa o tamanho da coluna para cada dispositivo, vamos entender:
lg = large, para telas grandes, full-HD
md = medium, para telas medianas, notebook's
sm = small, telas pequenas, tablet's
xs = extra small, telas muito pequenas, smarthphones
Vamos ver se você entendeu, se quisermos criar uma página que tenha 4 div's
de 3 colunas em todas as telas, como fariamos?
Observe:
Claro que algumas vezes isso não fica tão legal, ou seja, as vezes 3 colunas no
notebook é legal, mas 3 colunas no smarthphone não fica, então nesse caso,
teste o que fica melhor, você pode combinar de acordo com sua necessidade.
0.3 - Componentes
Conheça alguns componentes a seguir, vamos focar em alguns especificos.
0.3.1 - Buttons
Em relação a cores, existem por padrão:
É bem simples criar um, basta usar a classe especifica para cada cor, veja o
exemplo:
0.3.2 – Ícones
O Bootstrap utiliza vários ícones pra embelezar um pouco mais os
componentes, e dá pra colocar ícones em vários elementos, em button, em
link, em dropdown.
Vamos lá, peguemos aquele código utilizado anteriormente pra fazer botão e
alteremos um pouco.
Resultado:
Resultado:
Por mais simples que seja um algoritmo narrativo, pode haver uma grande
quantidade de
detalhes, que por sua vez segue um conjunto de regras dentro da sequência a
qual pertencem.
1.7.3 - Pseudocódigo
1.8 – Exercícios
1°)Crie uma sequência lógica para sacar dinheiro em um caixa eletrônico.
II Uma pessoa supõe que seu relógio está 5 minutos atrasado, mas, na
verdade, ele está 10 minutos adiantado. Essa pessoa que chega para um
encontro marcado, julgando estar 15 minutos atrasada em relação ao horário
combinado, chegou, na realidade, na hora certa em quantos minutos
atrasados?
III Três músicos, João, Antônio e Francisco, tocam harpa, violino e piano.
Contudo, não se sabe quem toca o quê. Sabe-se que o Antônio não é o pianista.
Mas o pianista ensaia sozinho à Terça. O João ensaia com o Violoncelista às
Quintas . Quem toca o quê?
IV – Existem três mulheres, Dona Rosa, Dona Branca, Dona Lilas, Dona branca
diz: as cores de vestido que estamos usando combinam com nossos nomes,
mas não estamos usando a cor do próprio nome, a pessoa que está de lilas
diz: é verdade, quis as cores que cada uma está usando?
6°) Supondo que você tenha planejado no seu dia posterior ir para o colégio,
após isso pagar uma conta no banco, após isso ir trabalhar,crie um
algoritmo o mais detalhado possível que possa satisfazer todo o
planejamento citado:
7ª)Você está numa cela onde existem duas portas, cada uma vigiada por um
guarda. Existe uma porta que dá para a liberdade, e outra para a morte. Você
está livre para escolher a porta que quiser e por ela sair. Poderá fazer apenas
uma pergunta a um dos dois guardas que vigiam as portas. Um dos guardas
sempre fala a verdade, e o outro sempre mente e você não sabe quem é o
mentiroso e quem fala a verdade. Que pergunta você faria?
8ª) Você é prisioneiro de uma tribo indígena. Esta tribo conhece todos os
segredos do Universo e portanto sabem de tudo. Você está para receber sua
sentença de morte. O cacique o desafia: "Faça uma afirmação qualquer. Se o
que você falar for mentira você morrerá na fogueira, se falar uma verdade você
será afogado. Se não pudermos definir sua afirmação como verdade ou
mentira, nós te libertaremos. O que você diria?
Por exemplo, você pode utilizar PHP para montar instantaneamente uma
complexa página da Web ou desencadear um programa que automaticamente
execute o débito no cartão de crédito quando um cliente realizar uma compra.
Observe uma representação de como PHP e HTML se comportam:
O
PHP
tem
pouca
relação
com
layout,
# apt-get update
#/etc/init.d/apache2 restart
$ cd /var/www
# mv index.html qualquer_nome.html
# gedit index.php
Após executar esse comando, digite o seguinte código no editor de texto gedit:
Nesse momento estamos criando uma aplicação PHP que chama o comando
echo “Hello World!!!'” que tem como finalidade mostrar a frase “Hello
World!!!”. Lembre-se que toda operação em PHP estará dentro da Tag especial:
“<?php ?> '” Abra o Browser e digite http://localhost/, se tudo estiver
correto, observaremos a seguinte tela:
2.4.1 - echo
É um comando que imprime uma ou mais variáveis ou textos, onde os mesmos
são colocados em aspas simples ' ' ou duplas “ ”.
Sintaxe:
Resultado:
2.4.2 - print
É uma função que imprime um texto na tela.
Sintaxe:
Resultado:
2.5- Comentários
Usamos os comentários para nos ajudar a lembrar de partes do código ou
para orientar outros programadores ao algoritmo que está sendo escrito.
Para comentar uma única linha nos códigos PHP podemos utilizar tanto o
separador “//”
como também “#”, observe o exemplo abaixo:
Lembrando que os comentários são trechos de código que não são executados,
onde eles servem somente para quem tem acesso aos códigos-fonte ou está
ligado diretamente a programação desse código. Podemos também comentar
muitas linhas, isso serve quando queremos que boa parte do código não
execute ou simplesmente colocar um comentário mais extenso. Tudo que ficar
entre: “/*” e “*/” será um comentário, independente do número de linhas,
observe o exemplo abaixo:
2.6.3 - Exercicios
1ª) Como podemos definir PHP e qual a sua relação com HTML?
2.6.3.1 - Práticos
11ª) Crie um arquivo PHP dentro da pasta www com o nome index.php, após
isso pegue o código anterior e adicione a esse arquivo, defina quais textos são
visualizadas em seu navegador. Caso exista erros, faça uma correção.
12ª) Crie dois arquivos diferentes, um com nome index.php, outro com o nome
teste.php, após isso inclua o arquivo teste.php dentro do arquivo index.php,
ambos arquivos deverá ter no seu código impresso mensagens diferentes
utilize o comando print.
2.7 - Variáveis
Variáveis são identificadores criados para guardar valores por
determinado tempo. Em PHP elas são declaradas e inicializadas, porém são
armazenadas na memória RAM do servidor web. Esse é um dos motivos pelo
qual os servidores precisam de grande quantidades de memória. Imagine um
servidor com mais de 20 mil acessos simultâneos ao mesmo tempo, onde cada
usuário está acessando a mesma página feita em PHP são criadas neste
processo variáveis diferentes para cada usuário, logo, isso faz com que muitos
processos sejam gerados e processados pelo servidor.
A tipagem em PHP é dinâmica, ou seja, as variáveis não precisam ser
obrigatoriamente inicializadas após a declaração. Uma variável é inicializada no
momento em que é feita a primeira atribuição. O tipo da variável será definido
de acordo com o valor atribuído. Esse é um fator importante em PHP , pois uma
mesma variável pode ser de um mesmo tipo ou não, e pode assumir no
decorrer do código um ou mais valores de tipos diferentes.
Resultado = maria.
Quando uma variável é atribuída a outra, sempre é criada uma nova área de
armazenamento na memória. Veja neste exemplo que, apesar de $b receber o
mesmo conteúdo de $a, após qualquer modificação em $b, $a continua com
o mesmo valor, veja:
Para criar referência entre variáveis, ou seja, duas variáveis apontando para a
mesma região da memória, a atribuição deve ser precedida pelo operador &.
Assim, qualquer alteração em qualquer uma das variáveis reflete na outra,veja:
2.7.2.1 - Boolean(lógico)
Um booleano expressa um valor lógico que pode ser verdadeiro ou falso.
Para especificar um valor booleano, utilize a palavra-chave TRUE para
verdadeiro ou FALSE para falso. No exemplo a seguir, declaramos uma variável
booleana $exibir_nome, cujo conteúdo é TRUE para verdadeiro. Em seguida,
testamos o conteúdo dessa variável para verificar se ela é realmente
verdadeira imprimindo na tela caso seja. Usaremos a estrutura IF, uma
estrutura de controle que veremos com mais detalhes no capitulo em breve,
para testar a variável.
Observe:
2.7.2.3 – Float(Real)
Os números do tipo float são números com casas decimais, onde a vírgula é
substituída por um ponto(já que nos EUA não se usa “,” para separar casas
decimais). Vale salientar que os números do tipo float também podem ser
negativos, positivos, ou zero.
Exemplo:
Observe o exemplo:
Resultado:
2.7.2.5 – Array(Matrizes)
Array é uma lista de valores armazenados na memória, os quais podem
ser de tipos diferentes (números, strings, objetos) e podem ser acessados a
qualquer momento, pois cada valor é relacionado a uma chave. Um array
também pode crescer dinamicamente com a adição de novos itens. Veremos
mais sobre arrays logo a seguir.
2.7.2.6 – Object(Objeto)
Um objeto é uma entidade com um determinado comportamento definido por
seus métodos (ações) e propriedade (dados). Para criar um objeto deve-se
utilizar o operador new . Para mais informações sobre orientação a objeto,
consulte a bíblia do programador PHP no site http://php.net e pesquise sobre
object.
2.7.2.7 – Resource(Recurso)
Recurso (resource) é uma tipo de dado especial que mantém uma referência de
recursos externos. Recursos são criados e utilizado por funções especiais, como
uma conexão ao banco de dados. Um exemplo é a função mysql_connect(), que
ao conectar-se ao banco de dados, retorna um variável de referência do tipo
recurso. Entenderemos mais sobre esse tipo de dado quando estudarmos
functions.
2.7.2.8 - Null(Nulo)
Quando atribuímos um valor do tipo null (nulo) a uma variável estamos
determinando que a mesma não possui valor nenhum, e que seu único valor é
nulo. Exemplo:
Exemplos:
Convertendo de ponto flutuante para inteiro.
Resultado: 208
Resultado: 542
O resultado poderia ser 542.0, mas lembrando que o interpretador do PHP faz
outra conversão ao notar que o numero 542.0 tem a mesma atribuição de 542.
O resultado seria o mesmo se tentarmos atribuir $a = 542.0.
2.7.4 - Exercícios
1ª) Qual a principal finalidade de uma variável?
5ª) Crie dez variáveis atribuindo valores diversos, logo após use o comando
echo pra imprimir na tela do browser, exemplo:
7ª) Como podemos distinguir um tipo de variável de outro, uma vez que a
tipagem é feita de forma automática em PHP ?
2.8 - Constantes
Constantes são espaços não memória que ao serem inicializados não podem
ter seu valor alterado, ou seja, diferente das variáveis que podemos mudar seu
valor e tipo a todo momento, nas constantes o valor e o tipo são perpétuos e
inalteráveis.
Resultado: php.net
2.8.3 - Exercícios
1ª) Qual a principal finalidade de um constante e como elas são definidas em
PHP ?
4ª) Crie uma constante com o comando define e imprima com o comando
print();
2.9 - Arrays
Um array no PHP é atualmente um conjunto de valores ordenado. Podemos
relacionar cada valor com uma chave, para indicar qual posição o valor está
armazenado dentro do array. Ele é otimizado de várias maneiras, então
podemos usá-lo com um array real, lista (vetor), hashtable (que é uma
implementação de mapa), dicionário, e coleção, pilha, fila e provavelmente
muito mais. Além disso, o PHP nos oferece uma gama enorme de funções para
manipulá-los.
A explicação dessas estruturas estão além do escopo dessa apostila, mas todo
conteúdo aqui abordado trás uma boa base para quem estar iniciando o
conteúdo de array.
ou
Nessa sintaxe temos duas formas de declarar uma variável do tipo array. Onde
a chave o índice podem ser de forma automática como no primeiro exemplo, ou
manual como no segundo. Outro detalhe importante é que: todo array começa
pela chave ou índice de número 0, quando o mesmo não é declarado.
Também temos outras formas de criar um array, onde simplesmente podemos
adicionar valores conforma a sintaxe abaixo:
ou
Em código temos:
chaves/índices valores
Código:
Observe que temos uma chave para representar a linha e outra para
representar a coluna, assim, determinando uma matriz 4x4. Podemos ver
também que inicializamos um array dentro do outro. Cada sub-array é uma
linha, e cada elemento do array maior representa as colunas.
Sintaxe:
Exemplo:
2.9.4 - Exercícios
1ª) O que é um array, e qual a sua principal finalidade?
2.10 - Operadores
Nesse exemplo pode-se observar a declaração da variável $d, logo após temos
uma inicialização e atribuição de concatenação em uma mesma linha, isso é
possível em PHP, deixando o código mais otimizado porém menos legível.
2.10.2.2 - Atribuição
O operador básico de atribuição é "=" (igual).
Com ele podemos atribuir valores as variáveis
como foi visto em exemplos anteriores. Isto
quer dizer que o operando da esquerda
recebe o valor da expressão da direita (ou
seja, "é configurado para"). Mas podemos
usar algumas técnicas, observe o exemplo ao
lado:
Resultado: a = 9,b = 4
Exemplo:
Resultado:
24
8
2
Vale ressaltar que a cada echo, o valor de $a sofre modificações. Isso devido a
atribuição feita após a operação. Usamos o operador ponto(.) para concatenar
os valores obtidos com '<br>' código usado em HTML para quebra de linha.
Exemplo:
Nesse exemplo temos uma
forma aplicada do uso de
decremento e incremento,
lembrando que a variável $a
pode ter qualquer nome.
Também podemos fazer um
comparativo com o Pré-
incremento ou incremento prefixado com operações que já conhecemos,
observe:
exemplo prático:
$a <= $b
E AND
OU OR
NÃO NOT
Com isso podemos construir a Tabela verdade onde trabalhamos com todas as
possibilidades combinatórias entre os valores de diversas variáveis envolvidas,
as quais se encontram em apenas duas situações (V e F), e um conjunto de
operadores lógicos. Veja o comportamento dessas variáveis:
Operação de Negação:
Operação de conjunção:
A
tabela seguinte mostra a precedência dos operadores, da maior precedência no
começo para os de menor precedência.
Resultado : 15
2.10.6 – Exercícios
1ª) Qual a finalidade dos operadores de strings?
9ª) Observe o código abaixo e diga quais das operações são executadas
primeiro, coloque a resposta em ordem decrescente.
$a = 8*5-3+4/2+19%5/2+1;
2.11.2.1 - Simples(IF)
Essa estrutura condicional está entre uma das mais usadas na
programação. Sua finalidade é induzir um desvio condicional, ou
seja, um desvio na execução natural do programa. Caso a
condição dada pela expressão seja satisfeita, então serão
executadas a instruções do bloco de comando. Caso a condição
não seja satisfeita, o bloco de comando será simplesmente
ignorado. Em lógica de programação é o que usamos como “SE (expressão)
ENTÃO {comando:}”.
2.11.2.2 - Composta(IF-ELSE)
Esta estrutura é bem semelhante a anterior a única diferença é que com if-
else temos duas possibilidades de saída, onde encontramos algumas regras:
• Só um bloco pode ser executado: ou do if ou o do else.
• Os dois blocos não poderão ser executados juntos.
• Não existe a possibilidade de não ser executado nenhum dos dois blocos.
Sintaxe:
Exemplo:
2.11.2.3 - Encadeada(IF-ELSE-IF-IF)
Em determinadas situações é necessário fazer mais de um teste, e executar
condicional-mente diversos comandos ou blocos de comandos. Isso é o que
podemos chamar de “If's encadeados”, onde usamos a estrutura IF-ELSEIF-
ELSE , Para facilitar o entendimento de uma estrutura do tipo:
ou
$numero = 2; $numero = 2;
switch($numero){ escolha($numero) então{
case 1: caso 1:
echo “Um”; echo “Um”;
break; interrompa;
case 2: caso 2:
echo “dois”; echo “dois”;
break; interrompa;
case 3: caso 3:
echo “três”; echo “três”;
break; interrompa;
default: padrão:
echo “número inválido”; echo “número inválido”;
} }
2.11.2.5 - Exercícios
1°) Faça um script em PHP que receba um número representado por uma
variável e verifique se este número é par ou ímpar e imprima a mensagem na
tela.
3ª) Faça um script em PHP usando switch, onde receba uma variável e mostre
as seguintes opções:
1 - módulo.
2 - somar.
3 - subtrair.
4 - multiplicar.
5 - dividir.
Resultado: 123456789
O código acima irá contar de 0 até 9, utilizando a dica dada antes temos:
→ De onde vai? De 0(zero)
→ Pra onde vai? Até 9(nove)
→ Como vai? De 1 em 1
Perceba que no código acima o laço irá rodar 10 vezes, e a cada rodada a
variável $n será incrementada em 1, fazendo assim com que o código tenha
um final garantido.
do{ faça{
comandos
comandos; }enquanto(condição);
}
while(condição);
Exemplo:
2.11.3.4 – Exercícios
1°) Faça um script que conte de 1 até 100.
2°) Faça um script que imprima na tela números de 3 em 3 entre 0 e 99, ex:
0,3,6,9...
4°) Faça um script que imprima na tela somente números pares de 2 até 20.
5°) Faça um script que receba duas variáveis $a e $b, logo após imprima os
números de
intervalos entre eles. Ex: a=5 ,b = 11, imprime : 5,6,7,8,9,10,11.
Exemplo: Resultado:
Outro exemplo:
Resultado:
2.11.4 - Break
Um comando bastante importante é o break, usado para abortar (parar)
qualquer execução de comandos como SWITCH, WHILE, FOR, FOREACH, ou
qualquer outra estrutura de controle. Ao encontrar um break dentro de um
desses laços, o interpretador PHP interrompe imediatamente a execução do
laço, seguindo normalmente o fluxo do script.
while....
for....
break <quantidades de
níveis>;
Vamos ver um exemplo com o uso de break dentro de um laço de repetição (no
caso o for), onde criamos um laço infinito, porém colocamos um if com a
condição de parar o laço através do break. Observe:
Observe que para definir qual nível podemos parar utilizamos o break, ou seja,
o primeiro nível é onde o break está localizado, no exemplo citado temos dois
níveis, e determina-mos pelo “break 2;” que o segundo for( que é o de
fora! ) deixaria de funcionar.
2.11.5 - Continue
A instrução continue, quando executada em um bloco de comandos
for/while, ignora as instruções restantes até o fechamento em “}”. Dessa
forma, o programa segue para a próxima verificação da condição de entrada do
laço de repetição, funciona de maneira semelhante ao break, com a diferença
que o fluxo ao invés de sair do laço volta para o início dele. Veja um exemplo:
Resultado: 0,2,4,6,8,10,12,14,16,18,
Fluxograma:
Assim como o break, também podemos definir em qual nível queremos que a
execução continue. Veja o exemplo abaixo:
Resultado:
2.11.6 - Exercícios
1ª) Qual a principal finalidade de uma estrutura de controle?
3ª) Crie um código com a um condição ternária onde receba um valor booleano
e de acordo com o valor passado na expressão, deve imprimir “sim” ou “não”.
4ª) Com o comando IF e ELSE crie um código que determine se uma expressão
é verdadeira ou falsa.
10ª) Crie um código onde podemos para a execução de um laço infinito com o
uso de BREAK.
d)Exemplo prático: foi passado o numero inicial 8 e o final 15, então o script
PHP deverá
imprimir o intervalo entre esse numero ou seja 8,9,10,11,12,13,14,15,
mostrando quais deles são pares e quais são ímpares.
Criando um formulário:
Todo formulário deve conter no mínimo as seguintes características, observe:
A tag input pode ser composta por vários elementos onde neles podemos
definir o tipo,nome, e o valor padrão além de outras propriedades que não
apresentaremos nessa
apostila.
Observe a tabela abaixo com a definição dos tipos que podemos atribuir ao
elemento type do input.
Exemplo:
URL:
Código: Resultado:
Código:
Código:
3.1.3 - Exercícios
1°) Crie um formulário HTML com os seguintes campos:
“nome”, “endereço”, “email”, “senha”, e o botão “enviar”.
2°) Utilize o método Get para visualizar os dados do array na URL do navegador
ao clicar no botão enviar.
3.2.1 - Functions
Quando queremos um código funcional para determinado fim, como por
exemplo fazer um cálculo ou alguma interação dentro do PHP , usamos o que
chamamos de função. As funções são um pedaço de código com o objetivo
específico, encapsulado sob um estrutura única que recebe um conjunto de
parâmetros e retorna ou não um determinado dado. Uma função é declarada
uma única vez, mas pode ser utilizada diversas vezes. É uma das estruturas
mais básicas para prover reusabilidade ou reaproveitamento de código,
deixando as funcionalidades mais legíveis.
Observe um
exemplo onde criamos uma função para calcular o índice de massa corporal de
uma pessoa(IMC), onde recebe como parâmetro dois argumentos. Um é a
altura representada pela variável $altura e o outro é o peso representada pela
variável $peso. Passamos como parâmetros para essa função o peso = 62 e a
altura = 1.75. Observe:
Resultado: 20.244897959184
na função.
Variáveis locais → São aquelas declaradas dentro de uma função e não tem
visibilidade
fora dela. Veja um exemplo:
Exemplo:
Resultado: 25
Resultado: 139.5
3.2.1.5 - Recursão
Esse código mostra de forma clara que não existe a possibilidade de
retornarmos mais de um return, caso isso ocorresse, teríamos um erro, ou não
funcionamento da função.
Exemplo:
Resultado: 120
Mas vale saber que para executar uma função basta invocá-la pelo nome e se
for necessário passe os
parâmetros.
Exemplo:
3.2.1.7 – Exercícios
1ª) Diga com suas palavras uma definição para função, e como podemos
declará-la em PHP.
2ª) Qual a diferença de variáveis globais para variáveis locais e como podemos
defini-las em PHP?
4ª) Quais as funções que podemos usar para criarmos uma função onde seus
parâmetros são passados pro argumentos variáveis?
7°) Crie uma função que determine se um numero é par ou ímpar. E faça uma
chamada
dessa função imprimindo o resultado.
9°) Crie uma função para determina se um numero é primo ou não. Numero
primo é aquele que possui dois divisores, 1 e ele mesmo. Criem um laço de
repetição e use estrutura de controle.
3.2.2.1 - $_COOKIES
Cookies são mecanismos para armazenar e consultar informações. Eles são
armazenados
na máquina do cliente que acessa o servidor php, e possui várias atribuições
que são definidas pelo programador, por exemplo: imagine uma loja virtual,
onde o cliente colocou em seu carrinho de compras vários produtos, mas por
algum motivo ele não concluiu a compra, tendo que desligar a máquina que foi
utilizada para fazer o acesso. No dia seguinte o cliente entra no mesmo site e
percebe que todos os itens ainda estão no carrinho de compra do jeito que ele
deixou, esperando a conclusão da compra. Nesse exemplo, podemos perceber
que as informações foram gravadas na maquina do cliente através dos cookies,
que são simplesmente arquivos gerados pela página acessada dentro de
alguma pasta do navegador que existe exclusivamente para esses arquivos.
O PHP atribui cookies utilizando a função setcookie que deve ser utilizada
antes da tag <html> numa página. Além disso o uso de cookies não é
recomendado quando trata-se de informações sigilosas. Os dados dos cookies
são armazenados no diretório de arquivos temporários do visitante, sendo
facilmente visualizado por pessoas mal intencionadas.
Além da opção “aceitar cookies” que pode ser desativada a qualquer momento
pelo visitante. Mas em cada navegador essa opção pode mudar de nome.
Observe o comando
abaixo:
setcookie
Sua sintaxe possui muitos parâmetros, abaixo está representada todos os
valores que podem ser atribuído ao setcookie, mas vale ressaltar que não
utilizaremos todos eles, somente os principais, veja sua sintaxe.
tempo_de_vida
Esse cookie tem a validade de 3600 segundos(1 hora), com isso concluímos
que o navegador fez seu acesso as 14:47:36. Isso é muito importante para a
programação dos cookies. Se quisermos que ele exista por um determinado
tempo, temos que calcular tudo em segundos da seguinte forma:
$tempo = time()+(3600*24*7);
Validade:
Acessando um cookie:
Para acessarmos o valor gravado em um cookie é bem simples, basta utilizar
usar o array super global $_COOKIE.
Sintaxe:
$_COOKIE['coloque_aqui_o_nome_do_cookie']
Exemplo:
Observe agora um
exemplo de um código
utilizado para contar as
visitas de um site usando
cookie:
O resultado é de acordo com a quantidade de vezes que o cliente entrou no site
ou atualizou o mesmo.
3.2.2.2 - $_SERVER
O array super global $_SERVER possui muitas informações do servidor, por
exemplo caminho do servidor, nome do servidor, endereço, browser, SO, dentre
outros.
Exemplo:
Resultado: localhost
3.2.2.3 - $_SESSION
Sessões são mecanismos muito parecidos com os tradicionais cookies. Suas
diferenças são que sessões são armazenadas no próprio servidor e não expiram
a menos que o programador queira apagar a sessão.
As sessões são métodos de manter(ou preservar) determinados dados a
mantê-los ativos enquanto o navegador do cliente (o internauta) estiver aberto,
ou enquanto a sessão não expirar (por inatividade, ou porque em algum ponto
você mandou que ela expirasse).
session_start();
Criamos uma sessão com o nome minha_sessao (não é uma boa prática de
programação usar acentos em nomes de variáveis ou qualquer outra
nomeação) e atribuímos a ela o valor gravado na variável string $var . Essas
informações ficam gravadas no servidor, logo após podemos resgatar o valor
da seguinte forma:
Uso de session_destroy() :
Uso de unset() :
Usamos unset() quando queremos desalocar uma determinada sessão,
imaginamos que o usuário ao acessar uma determinada página, tenha criado
várias sessões com nomes diferente. Os nomes das sessões são determinada
pelo programador, porém ao clicar em um link, o mesmo tem que destruir a
seção escolhida. O exemplo abaixo destrói a sessão especificada:
Dessa forma
desalocamos(destruirmos) a sessão
“minha_sessao”, porém se existirem
outras, elas ainda continuarão ativas.
3.2.2.4 - $GLOBALS
Este é um array superglobal, ou global automática também. Isto simplesmente
significa que ela está disponível em todos escopos pelo script. Não há
necessidade de fazer global $variable; para acessá-la dentro de uma função
ou método.
Exemplo:
Resultado: Rapadura
3.2.2.6 - Exercícios
1°) Qual a finalidade da variável global $_SERVER['HTTP_USER_AGENT']?
2°) Crie um cookie gravando nele o seu nome, logo após abra o Firefox e exiba
o valor gravado.
3°) Crie um arquivo chamado “criar_sessao.php”, utilize comando PHP para cria
uma seção com a
durabilidade de 3 minutos e adicione o valor “sessão ativa”.
$identificador = fopen(“string_do_arquivo”,“modo_do_arquivo”)
sintaxe:
fwrite(“indentificador”,“conteúdo”)
O uso de “\n” antes da palavra rua faz com que ocorra uma quebra de linha
escrevendo o resto do conteúdo na linha abaixo. Após a execução do script
(colocando http://localhost no navegador e o nome do script criado), abrimos o
arquivo de texto(meu_arquivo.txt) com um editor e percebemos o resultado
final.
Observe mais um exemplo: Resultado:
Exemplo:
Resultado:
Nesse exemplo utilizamos o arquivo anterior onde foi escrito três linhas, porém
efetuamos a leitura somente da linha 1 (índice 0) e linha 2 (índice 1). Oura
forma é percorrer o array usando um foreach(), dessa forma podemos ler todas
as linhas existentes no arquivo, veja:
Exemplo: Resultado:
Após
mkdir(“string_localização”, “int_modo”);
Getcwd
Retorna o diretório corrente, este comando é usado caso precise obter o
diretório onde o arquivo PHP que possui este comando está guardado.
sintaxe:
getcwd()
rmdir
Apaga um diretório. Sintaxe:
rmdir(“nome_diretório”);
Resultado:
3.2.3.7 – Exercícios
1°) O que é manipulação de arquivos?
4°) Com base no arquivo criado, utilize o comando fwrite para ler o mesmo
imprimindo na tela do navegador o conteúdo do arquivo.
6°) Crie uma cópia do arquivo renomeando o novo arquivo para “palavras.txt”.
9°) Crie um código que imprima na tela todo o cominho de pastas onde se
localiza o arquivo “palavras.txt”.
3.2.4.1 - INCLUDE
include<arquivo>:
A instrução include() inclui e avalia o arquivo informado. O código existente no
arquivo entram no escopo do programa que foi inserido, tornando-se disponível
a partir da linha em que a inclusão ocorre. Se o arquivo não existir, produzirá
uma mensagem de advertência(warning).
Exemplo onde temos dois arquivos:
código do arquivo_teste.php código do arquivo
index.php
Resultado:
3.2.4.2 - REQUIRE
require<arquivo>:
Comando muito parecido ao include. Difere somente na manipulação de erros.
Enquanto o include produz uma warning, o require uma mensagem de Fatal
Error caso o arquivo não exista.
Sintaxe: require 'nome_do_arquivo.php';
3.2.4.3 - INCLUDE_ONCE
include_once<arquivo>:
Tem funcionalidade semelhante ao include, a diferença é que caso o arquivo
informado já esteja incluído, esse comando não refaz a operação, ou seja, o
arquivo é incluído apenas uma vez. Este comando é útil para garantir que o
arquivo foi carregado apenas uma vez. Caso o programa passe mais de uma
vez pela mesma instrução, evitará sobreposição de arquivo.
Sintaxe: include_once 'nome_do_arquivo.php';
3.2.4.4 - REQUIRE_ONCE
require_once<arquivo>:
Tem funcionalidade parecida com o comando require. A diferença é
justamente caso o arquivo já tenha sido incluído no programa, pois ele não
carrega novamente o código. É muito semelhante ao include_once, evitando
redeclarações ou sobreposições, porém a mensagem exibida caso o arquivo
não exista é de Fatal Error.
Sintaxe: require_once 'nome_do_arquivo.php';
Orientado a Objetos
PHP Orientado a Objetos com Banco de Dados
Sumário
Prefácio.....................................................................................................5
Capítulo 0 – PHP Orientado à Objetos..........................................................6
0.1 - Introdução a OO..................................................................................6
0.1.1 - Como funciona? Pra que serve? Em que melhora?................7
0.1.2 - Classes...................................................................................7
0.1.3 – Construindo uma classe em PHP...........................................8
0.1.3.1 - Atributos......................................................................9
0.1.3.2 - Métodos.......................................................................9
0.1.4 – Métodos GET e SET................................................................9
0.1.4.1 - Método de Armazenamento de Atributos(SET)..........10
0.1.4.2 - Método de Retorno de Atributos(GET).......................10
0.1.4.3 – Incluindo os Métodos GET e SET...............................11
0.1.5 - Instanciando a classe criada................................................11
0.2 - 4 pilares da OO.................................................................................13
0.2.1 - Herança................................................................................13
0.2.1.1 - Extends......................................................................14
0.2.2 - Encapsulamento...................................................................16
0.2.3 - Polimorfismo........................................................................17
0.2.3.1 - Sobrescrita.................................................................17
0.2.3.2 – Usando o Polimorfismo..............................................17
0.2.4 - Abstração.............................................................................18
0.2.4.1 – Classe Abstrata.........................................................18
0.3 – Incrementando a OO........................................................................19
0.3.1 – Variáveis Estáticas...............................................................19
0.3.2 - Métodos Estáticos................................................................20
0.3.3 - Exercícios.............................................................................21
0.3.4 – Métodos Mágicos.................................................................21
0.3.4.1 - __construct................................................................21
0.3.4.2 - __destruct..................................................................21
0.3.4.3 - __toString...................................................................22
0.3.4.4 - __invoke.....................................................................22
0.4.5 - Interface...............................................................................23
Capítulo 1 – Banco de Dados(MySQL).........................................................25
1.1 -
O que é o MYSQL?.............................................................................25
1.2 -
Trabalhando com MYSQL..................................................................25
1.3 -
Estruturas de Dados.........................................................................26
1.4 -
Criando Banco e Tabelas...................................................................27
1.4.1 - CREATE DATABASE...............................................................27
1.4.2 - CREATE TABLE......................................................................28
1.4.3 - DROP....................................................................................28
1.5 - Manipulando dados das tabelas........................................................29
1.5.1 - INSERT..................................................................................29
1.5.2 - SELECT.................................................................................29
1.5.3 - UPDATE................................................................................29
1.5.4 - DELETE.................................................................................30
2.1.1 – Visualização.........................................................................55
2.1.2 - Especificação.......................................................................55
2.1.3 - Construção...........................................................................55
2.1.4 - Documentação.....................................................................55
2.1.5 – Razões para Modelar...........................................................55
2.2 – Tipos de Diagrama...........................................................................56
2.2.1 – Diagrama de Atividade........................................................56
2.2.2 – Diagrama de Sequência.......................................................56
2.2.3 – Diagrama de Caso de Uso...................................................56
2.2.4 – Diagrama de Classe.............................................................56
2.2.5 – Diagrama de Estado............................................................57
0.3 - Documentação do Sistema...............................................................58
Capítulo 3 – MVC......................................................................................59
3.1 – O que é? Pra que serve?...................................................................59
3.2 - Organização......................................................................................59
3.2.1 - View.....................................................................................60
3.2.2 - Control.................................................................................60
3.2.3 - Model...................................................................................60
3.3 – Usando o MVC na prática.................................................................60
Capítulo 4 – Interação PHP & MySQL..........................................................62
4.1 – Conexão com MySQL........................................................................62
4.2 – PDO – PHP Data Objects...................................................................62
4.3 - PDO – MySQL....................................................................................63
4.3.1 – Conectando a um banco MySQL..........................................63
4.3.2 – Inserindo um registro na tabela...........................................64
4.3.3 – Selecionando registros de uma tabela.................................66
4.3.3.1 – Consulta sem filtro(where)........................................66
4.3.3.2 – Consulta com filtro(where)........................................67
4.3.4 – Atualizando registros de uma tabela...................................69
4.3.5 – Excluindo registros de uma tabela.......................................70
Posfácio..................................................................................................71
Prefácio
Olá Jovem, seja bem vindo(a)!
Esta apostila foi criada para ser utilizada na aprendizagem em lógica voltada
para programação WEB usando a linguagem PHP Orientado a Objetos e Banco
de Dados Relacioal, salientando que a mesma foi adaptada e finalizada
baseando-se nas apostilas do Projeto e-Jovem.
A mesma foi elaborada com o intuito de enriquecer cada vez mais aqueles que
buscam o sucesso profissional ou até mesmo pessoal, apresentamos um
material dividido em 10 capítulos, desde lógica de programação, princípios
básicos até os conceitos mais avançados dentro de um contexto lógico como
Orientação a Objetos e Banco de Dados Relacional, levando ao futuro JEDI, uma
base média para programação WEB ou em outras linguagens.
Esperamos que esse material seja um contribuinte para todos aqueles que
procuram a força e o poder supremo da Programação, e que possam aprender
de forma dedicada, e que principalmente tenham um significado importante
para a criação e desenvolvimento de seres com o poder sem limites.
0.1 - Introdução a OO
Iremos aprender a trabalhar com a linguagem PHP Orientada a Objetos.
Aconselhamos que estude antes algoritmos básicos de lógica de Programação
em PHP e construção1 HTML/CSS, pois teremos que está afiados nos conceitos
estruturais para continuar a nossa caminhada em assuntos mais aprofundados.
Programação Orientada a Objetos, apartir de agora chamaremos de
“POO”, constitui em um conjunto de regras de programação. Estudamos
anteriormente como programar de forma estruturada, iniciávamos a execução
do código e finalizávamos todos os processos na mesma página. Com a
Programação Orientada a Objetos podemos usar algoritmos já feitos por
alguém, ou criar novos algoritmos interagindo com os que já foram
desenvolvidos por alguém com objetivo de resolver problemas mais complexos
gerando um novo produto final. Vamos fazer uma comparação no o dia a dia
para entendermos melhor.
CARRO
0.1.2 - Classes
Como estamos trabalhando com POO, o nosso
objetivo final é construir um Objeto que tenha
suas características. O Objeto é criado a partir
de uma “Classe”. Ela irá servir como modelo
para criação do Objeto. Vamos fazer uma
comparação do dia-a-dia para entendermos
melhor.
Uma casa não é construído de qualquer
forma, o pedreiro irá construir a casa de
acordo com as instruções da planta. Como
tamanho do banheiro, quantos quartos, onde
estará a porta de entrada. A planta da casa,
seria uma “Classe” que serve como
referência na construção dessa e de outras
casa que são os “Objetos”.
Outro exemplo:
Da mesma forma, a
receita de bolo é a
“classe” e os bolos são
os “objetos”. E
também da mesma
forma a mesma receita
serve como base para
criação de vários tipos
de bolo.
Iremos aprender, como criar uma “Classe”, ou seja, referencia para futuros
“Objetos”. Imagine que queremos criar um “Pessoa”. Para poder criar uma
“Pessoa” teremos antes que fazer 2 perguntas básicas.
O que poderei ter?
O que poderei fazer ?
→ Anote tudo que uma pessoa pode ter, como
nome, data de nascimento, RG, CPF, etc. Para
a resposta da primeira pergunta, nós temos o
que chamamos de “Atributos da classe
Pessoa”.
Exemplo:
Imagine que iremos criar um usuário para o nosso site, seguindo a mesma linha
de raciocínio acima temos as seguintes características e ações de uma classe
“Usuário”:
Exercício rápido:
→ Crie com papel e caneta, uma classe para: Pessoa, Carro, bicicleta e
computador.
→ Para cada classe criada, faça a pergunta: “O que minha classe deverá ter ?”
“O que ela poderá fazer ?”.
→ Organize as informações em atributos e métodos e esteja pronto, para
implementar em código para o nosso próximo tópico.
0.1.3.1 - Atributos
Nesse momento precisamos criar as variáveis que farão parte da estrutura
básica da classe usuário. O encapsulamento (que veremos adiante)
“private” foi usado para proteger essas variáveis. Lembrando que
dependendo da situação, podemos deixá-las como “protected”, ou “public”.
O encapsulamento também
deverá ser usado nos
métodos, veremos a seguir.
0.1.3.2 - Métodos
Para o nosso usuário, teremos também que usar um método especial, chamado
de “método mágico”. Esses métodos têm nomes e funções especificas e
começam com “__” (2 underlines). O método mágico que iremos trabalhar se
chama: __construct. Este
método é um construtor Nome do Método
da classe, ou seja, a nossa (Método Mágico
classe só poderá existir se
satisfazer plenamente a Parâmetros
chamada do construtor.
Vamos levar em
consideração que para um
usuário existir, ele precise
obrigatoriamente de um
nome de usuário e uma
senha para alimentar os seus atributos, pois são os valores básicos para o
usuário logar-se. Então incluindo no código, temos:
Método Descrição
Sets Métodos para alterar atributos de uma classe
Gets Métodos para retornar um valor de atributo da
classe
Perceba que por padrão de nomenclatura, os métodos que tem essa função,
começa com o termo “set” seguido pelo atributo que queremos alterar.
Podemos receber outros objetos como parâmetro.
Exercício rápido:
→ Lembra das classes criadas: Pessoa, Carro, bicicleta, Casa, Computador?
Estes métodos inclui na página código “php” ou páginas “html” por exemplo.
Veja como estanciar um objeto usuário na próxima página:
Podemos criar métodos que não sejam do tipo “get/set”. Podemos criar
métodos para fazer qualquer operação com o que foi aprendido em todo o
nosso curso de PHP , como inserir operações matemáticas, estruturas
condicionais, estruturas de repetição, etc... Veja os exemplos abaixo:
ou
0.2 - 4 pilares da OO
Uma linguagem é caracterizada como Orientada a Objetos quando atende a
estes quatro elementos que iremos ver.
Quando se programa orientado a objetos alguns itens são essenciais para
caracterizá-lo, a partir desses itens é que toda a lógica pode ser aplicada e
consequentemente todas as vantagens dessa metodologia podem ser
aproveitadas. Hoje vamos explicar cada uma dessas características que são
tratadas como pilares.
0.2.1 - Herança
O uso de herança é muito importante na criação de classes orientadas a
objetos, com ela você poderá criar uma nova classe utilizando uma outra classe
que já existe. Este recurso lhe permite organizar melhor o seu código
reaproveitando código das classes herdadas, facilitando a manutenção do
código e evitando reescrita de algorítimo. Agora, iremos aprender a gerar uma
interação entre classes criadas e como utilizá-las.
0.2.1.1 - Extends
Ok, usaremos a classe chamada “Usuários” que criamos nos exemplos
anteriores, que contem suas características e ações. Porém se nós quisermos
criar uma nova classe chamada “Alunos”, “Funcionários”, “Clientes” ou
“Professores” teremos novamente que criar a estrutura de um usuário dentro
de cada uma delas?
Para evitar reescrita de código, podemos fazer com que essas classe por
exemplo herde todas as características de usuários. Neste nosso caso, a
classe “Usuários” é a classe Pai e as demais classes que vão herdar
características dela, serão classificadas como classes filhas.
Veja a
imagem
abaixo,
de como
seria
uma
Classe
Neste exemplo, cinco variáveis foram definidas: (o tipo de comida que o animal
come), (o nível de fome do animal), (representação da altura e largura do
Mais um exemplo:
Imaginem que vocês precisam criar um programa de gerencias de conta de
Banco, todos os clientes terão um determinado tipo de conta, Conta poupança
e Conta especial, veja no diagrama abaixo.
Exercício Rápido:
1ª) Como seriam as classes mostradas no diagrama em PHP? Modele e monte
essas estruturas organizadas de acordo com o que aprendeu.
0.2.2 - Encapsulamento
Encapsulamento é uma forma de proteção do nosso código, existem
informações que queremos que algumas classes vejam, outras não. Imagine a
sua conta de email. A conta do seu usuário poderá ser vista por outras pessoas,
pois ele irá identificar o seu email dos
demais, porém a sua senha é algo “privado” onde só você poderá ter acesso
a ela. Da mesma forma que queremos mostrar ou proteger os nossos dados,
uma classe também tem as mesmas necessidades e podemos defini-las
através do encapsulamento.
0.2.3 - Polimorfismo
Usamos esse recurso quando queremos modificar métodos herdados. Para isso,
temos que aprender o conceito e prática de sobrescrita(veremos logo-logo).
0.2.3.1 - Sobrescrita
Usamos sobrescrita de métodos quando temos que modificar um método
herdado da classe pai, para sobrescrever os métodos teremos que criar o
mesmo método herdado na
classe filha com as assinaturas(nome) iguais. Levando em consideração a
classe Animal criada no tópico anterior, veja no exemplo a seguir:
No exemplo anterior, o cachorro já herda
o método comer, porém o animal come
qualquer alimento, mas este cachorro
não come qualquer alimento, ele só
come ração. O termo “@Override” no
exemplo, não é obrigatório, apenas para
avisar a IDE que este é um método de
sobrescrita.
Usuários
Classe Pai
0.2.4 - Abstração
Esse pilar, como o próprio nome já diz, visa abstrair algo do mundo real
e transforma-lo em um objeto na programação. Esse objeto será composto por
uma identidade, propriedades e métodos. Dessa forma fica mais simples trazer
para dentro da programação o problema que precisa ser resolvido ou o
processo que precisará ser automatizado.
O Programa irá encontrar um erro, pois a classe Usuários agora é uma classe
abstrata e não poderá ser instanciada diretamente, porém se analisarmos a
classe “Alunos”, podemos notar que não existe nenhum erro.
As classes abstratas, também poderão ser implementada como interface,
tópico que iremos ver em breve.
0.3 – Incrementando a OO
Veremos agora mais alguns métodos e estruturas que podem ajudar no
desenvolvimento com PHP Orientado a Objetos.
O resultado será:
0.3.3 - Exercícios
1ª) Imagine outras situações onde podemos criar uma variável estática e
procure implementar em alguma classe criada ou em um classe nova que
possa criar.
4ª) Crie uma classe que contenha as informações em um vetor dos classes
Criados e métodos que possam receber e Enviar essas informações em uma
tabela.
0.3.4.1 - __construct
Esse método mágico é o mais conhecido de todos, vimos eles no capítulo
anterior, vamos recapitular então: como o próprio nome já diz, “construct”,
significa construção, esse método tem como função ser inicializado no
momento da instancia de um objeto, vamos observar novamente a utilização
desse método na classe Usuários:
0.3.4.2 - __destruct
Como o nome já diz, “destruct” significa eliminação, quando os objetos não
são mais usados pelo algoritmo, podemos eliminá-los da memória, o método
mágico “__destruct” é responsável por realizar uma ação ao fim da sua
existência, vamos criar esse método em uma classe Alunos para ver como
funciona.
0.3.4.3 - __toString
Como o próprio nome já diz, “toString” significa “tornar sequência de
caracteres”, esse método é responsável por representar um valor ao
tentarmos ter como resposta o próprio objeto. Nos exemplos anteriores,
retornamos valores ou atributos através de métodos get, porém podemos fazer
com que o próprio objeto retorne um valor. Veja na Imagem a baixo a sua
construção:
A diferença do método
__toString para o método get
é que não precisamos chamar
um método para que
possamos retornar esse valor,
o próprio Objeto irá
representar o valor que você
desejar, veja como executá-lo:
0.3.4.4 - __invoke
Como o próprio nome já diz, “invoke”, significa “chamar/invocar”. Ele será
chamado sempre quando o script tentar chamar o próprio objeto como uma
função, veja sua construção na imagem abaixo:
Perceba que não precisamos usar o “->” para chamar nenhum método, o
próprio objeto “Aluno” terá um método incorporado, conseguimos
implementá-lo usando o Método mágico “__invoke”.
0.4.5 - Interface
Interface é uma espécie de superclasse 100% abstrata que define os métodos
que uma subclasse deve suportar, mas não como esse suporte deve ser
implementado. Isso porque ao criar uma interface, estará definindo um
contrato com o que a classe pode fazer, sem mencionar nada sobre como o
fará. Qualquer tipo de classe e de qualquer árvore de herança pode
implementar uma interface. Usamos a função implements para implementar
as interfaces em uma outra classe.
O que iremos construir são regras de convivência entre os alunos, nada melhor
que usar as regras de bons modos. Iremos criar uma interface com métodos
que contenham ações de boa convivência entre aluno, funcionários e
professores na escola, as ações que iremos criar são basicamente 3:
“Obrigado”, “Bom dia” e “Com licença”. Nesse momento estou querendo
informar o PHP que qualquer classe que for implementada esse método, terá
que ter obrigatoriamente esses 3 métodos obedecendo até mesmo os
parâmetros que cada função pede.
Representações
Agora que já sabemos que uma API permite a interoperabilidade entre usuários e
aplicações, isso reforça ainda mais a importância de pensarmos em algo padronizado e,
de preferência, de fácil representação e compreensão por humanos e máquinas. Isso
pode soar um pouco estranho, mas veja esses três exemplos:
Qual deles você escolheria para informar o endereço em uma carta? Provavelmente o
último, por ser de fácil entendimento para humanos, não é mesmo? Contudo, as 3
representações são válidas, pois nosso entendimento final é o mesmo, ou seja, a
semântica é a mesma.
Por outro lado, você deve concordar comigo que a primeira representação (formato XML)
é mais verbosa, exigindo um esforço extra por parte de quem está escrevendo. No
segundo exemplo (formato JSON) já é algo mais leve de se escrever. Já o último
(formato YAML), é praticamente como escrevemos no dia a dia.
Sendo assim, esse é o primeiro passo que precisamos dar para permitir a comunicação
interoperável. E o mais legal é que essas 3 representações são válidas atualmente, ou
seja, homens e máquinas podem ler, escrever e entender esses formatos.
Origem do REST
O HTTP é o principal protocolo de comunicação para sistemas Web, existente há mais de
20 anos, e em todo esse tempo sofreu algumas atualizações. Nos anos 2000, um dos
principais autores do protocolo HTTP, Roy Fielding, sugeriu, dentre outras coisas, o uso
de novos métodos HTTP. Estes métodos visavam resolver problemas relacionados a
semântica quando requisições HTTP eram feitas.
Estas sugestões permitiram o uso do HTTP de uma forma muito mais próxima da nossa
realidade, dando sentido às requisições HTTP. Para melhor compreensão, veja os
exemplos abaixo (requisições em formatos fictícios)
• GET: http://www.meusite.com/usuarios
• DELETE: http://www.meusite.com/usuarios/jackson
• POST http://www.meusite.com/usuarios–data {nome: joaquim}
Pela simples leitura (mesmo o método GET e DELETE sendo em inglês) é possível inferir
que no primeiro caso estamos pegando (GET) todos os usuários do site, ou seja, teremos
uma lista de todos os usuários que estão cadastrados no sistema/site. Já, no segundo
caso, estamos apagando (DELETE) o usuário Jackson. No último exemplo, estamos
usando o método POST, em que percebemos o envio de dados extras para cadastrar um
novo usuário.
Veja o quão simples ficou expressar o que desejamos realizar ao acessar um determinado
endereço, usando verbos específicos para URLs específicas e usando dados
padronizados, quando necessário.
Estes princípios apresentados fazem parte do REST! Em outras palavras, nesses
exemplos, temos: uma representação padronizada, verbos e métodos usados, bem como,
URLs.
O que é REST?
Observe que desta vez foi preciso tomar um cuidado adicional. Pelo fato de
“dependentes” ser um campo opcional, foi preciso utilizar a função “property_exists” para
checar cada empregado, ou seja para verificar se o $e (empregado corrente) possui uma
propriedade denominada “dependentes”. Apenas em caso afirmativo que os dependentes
são capturados (jogados para o array “$deps”) e exibidos na tela. O resultado da
execução do programa é mostrado abaixo:
data do arquivo: 15/12/2012
nome: Jason Jones - idade: 38 - sexo: M
dependentes:
- Sedna Jones
- Ian Jones
nome: Ada Pascalina - idade: 35 - sexo: F
nome: Delphino da Silva - idade: 26 - sexo: M
A função “json_decode” possui uma opção bastante interessante que corresponde a gerar
um array associativo a partir da string JSON. Para fazer isso, basta especificar o valor
true, como segundo parâmetro na chamada da função, como mostra o exemplo da
Listagem 5.
Listagem 5.Criando um array associativo com a função “json_decode”
Resultado:
array(3) { ["Jason"]=> int(38) ["Ada"]=> int(35) ["Delphino"]=> int(26) }
Como o próprio nome indica, esta função faz o caminho inverso: ela converte um objeto
PHP para uma string JSON. Um exemplo básico de utilização é apresentado na Listagem
6, onde transformamos um array associativo para uma string JSON.
Listagem 6. Função “json_encode” – exemplo inicial
Veja abaixo o resultado da execução do programa:
{"Jason":38,"Ada":35,"Delphino":26}
Na Listagem 7, apresentamos um exemplo envolvendo um array mais complexo.
Listagem 7.Convertendo um array com 3 empregados para uma String JSON
4. Tratamento de Erros
Para realizar o tratamento de erros o PHP disponibiliza a função “json_last_error”. Esta
função simplesmente retorna uma das seguintes constantes pré-definidas para indicar o
erro ocorrido.
• 0 = JSON_ERROR_NONE: nenhum erro ocorreu;
• 1 = JSON_ERROR_DEPTH: a profundidade máxima de aninhamento de uma
string JSON foi excedida (esse valor máximo é 512);
• 2 = JSON_ERROR_STATE_MISMATCH: erro de underflow ou outro tipo de estado
inválido;
• 3 = JSON_ERROR_CTRL_CHAR: foi encontrado um caractere de controle no
corpo da string JSON;
• 4 = JSON_ERROR_SYNTAX: erro de sintaxe;
• 5 = JSON_ERROR_UTF8: erro na codificação UTF-8 da string JSON;
Um exemplo de código para tratamento de erros é mostrado na Listagem 8. Neste
exemplo, deixamos propositalmente sem aspas o valor da variável sexo (M). Com isto, um
erro de sintaxe (JSON_ERROR_SYNTAX) será acusado pela função “json_last_error”.
Listagem 8. Função “json_last_error”
Veja o resultado:
Erro!
- Erro de sintaxe! String JSON mal-formada!
Este artigo apresentou as três funções básicas que podemos utilizar na linguagem PHP
para a manipulação de dados no formato JSON. Como comentário final, é importante que
você perceba que estas funções trabalham importando as informações JSON para a
memória. Normalmente isto não gera nenhum problema, pois o principal uso do JSON é a
troca mensagens de tamanho pequeno ou médio entre aplicações, quase sempre com o
uso da tecnologia AJAX. Se você precisar trabalhar com um arquivo JSON de tamanho
muito grande, precisará procurar por alguma extensão desenvolvida por terceiros.
Laravel
Framework open source, o Laravel é, sem dúvidas, um dos mais utilizados atualmente.
Desenvolvido por Taylor B. Otwell sobre a licença MIT, o Laravel possui seu código
hospedado no GitHub e é um framework para os apreciadores de um código bonito, como
diz seu slogan: “The PHP Framework For Web Artisans”.
Por possuir uma sintaxe simples e clara, permite que o desenvolvedor trabalhe de
maneira mais rápida e extremamente estruturada. Possui uma imensa comunidade ativa,
o que o torna ainda mais aceito no mercado.
Utiliza o padrão arquitetural MVC, que divide a aplicação em três camadas distintas,
sendo elas o Model, View e Controller, onde:
• Model: determina as entidades do projeto, ou seja, quais tabelas serão mapeadas;
• View: camada responsável por exibir informações ao usuário, normalmente páginas
HTML;
• Controller: camada que faz o “meio de campo” entre a view e o model, ou seja,
obtém a requisição que o usuário realiza, busca os dados através do model e
retorna à view.
Em seu site (https://laravel.com/) é possível encontrar toda sua documentação, novidades
do framework (Podcasts, blog, tutoriais..), parceiros e muito mais.
CodeIgniter
Symfony
CakePHP
Arrays
• array_chunk — Divide um array em pedaços
• array_column — Retorna os valores de uma coluna do array informado
• array_combine — Cria um array usando um array para chaves e outro para valores
• array_count_values — Conta todos os valores de um array
• array_diff_assoc — Computa a diferença entre arrays com checagem adicional de
índice
• array_diff_key — Computa a diferença entre arrays usando as chaves na
comparação
• array_diff_uassoc — Computa a diferença entre arrays com checagem adicional de
índice que feita por uma função de callback fornecida pelo usuário
• array_diff_ukey — Computa a diferença entre arrays usando uma função callback
na comparação de chaves
• array_diff — Computa as diferenças entre arrays
• array_fill_keys — Preenche um array com valores, especificando chaves
• array_fill — Preenche um array com valores
• array_filter — Filtra elementos de um array utilizando uma função callback
• array_flip — Permuta todas as chaves e seus valores associados em um array
• array_intersect_assoc — Computa a interseção de arrays com uma adicional
verificação de índice
• array_intersect_key — Computa a interseção de array comparando pelas chaves
• array_intersect_uassoc — Computa a interseção de arrays com checagem de
índice adicional, compara índices por uma função de callback
• array_intersect_ukey — Computa a interseção de arrays usando uma função de
callback nas chaves para comparação
• array_intersect — Calcula a interseção entre arrays
• array_key_exists — Checa se uma chave ou índice existe em um array
• array_key_first — Gets the first key of an array
• array_key_last — Gets the last key of an array
• array_keys — Retorna todas as chaves ou uma parte das chaves de um array
• array_map — Aplica uma função em todos os elementos dos arrays dados
• array_merge_recursive — Funde dois ou mais arrays recursivamente
• array_merge — Combina um ou mais arrays
• array_multisort — Ordena múltiplos arrays ou arrays multidimensionais
• array_pad — Expande um array para um certo comprimento utilizando um
determinado valor
• array_pop — Extrai um elemento do final do array
• array_product — Calcula o produto dos valores de um array
• array_push — Adiciona um ou mais elementos no final de um array
• array_rand — Escolhe um ou mais elementos aleatórios de um array
• array_reduce — Reduz um array para um único valor através de um processo
iterativo via função callback
• array_replace_recursive — Replaces elements from passed arrays into the first
array recursively
• array_replace — Replaces elements from passed arrays into the first array
• array_reverse — Retorna um array com os elementos na ordem inversa
• array_search — Procura por um valor em um array e retorna sua chave
correspondente caso seja encontrado
• array_shift — Retira o primeiro elemento de um array
• array_slice — Extrai uma parcela de um array
• array_splice — Remove uma parcela do array e substitui com outros elementos
• array_sum — Calcula a soma dos elementos de um array
• array_udiff_assoc — Computa a diferença entre arrays com checagem adicional de
índice, compara dados por uma função de callback
• array_udiff_uassoc — Computa a diferença entre arrays com checagem adicional
de índice, compara dados e índices por uma função de callback
• array_udiff — Computa a diferença de arrays usando uma função de callback para
comparação dos dados
• array_uintersect_assoc — Computa a interseção de arrays com checagem
adicional de índice, compara os dados utilizando uma função de callback
• array_uintersect_uassoc — Computa a interseção de arrays com checagem
adicional de índice, compara os dados e os índices utilizando funções de callback
separadas
• array_uintersect — Computa a interseção de array, comparando dados com uma
função callback
• array_unique — Remove os valores duplicados de um array
• array_unshift — Adiciona um ou mais elementos no início de um array
• array_values — Retorna todos os valores de um array
• array_walk_recursive — Aplica um função do usuário recursivamente para cada
membro de um array
• array_walk — Aplica uma determinada funcão em cada elemento de um array
• array — Cria um array
• arsort — Ordena um array em ordem descrescente mantendo a associação entre
índices e valores
• asort — Ordena um array mantendo a associação entre índices e valores
• compact — Cria um array contendo variáveis e seus valores
• count — Conta o número de elementos de uma variável, ou propriedades de um
objeto
• current — Retorna o elemento corrente em um array
• each — Retorna o par chave/valor corrente de um array e avança o seu cursor
• end — Faz o ponteiro interno de um array apontar para o seu último elemento
• extract — Importa variáveis para a tabela de símbolos a partir de um array
• in_array — Checa se um valor existe em um array
• key_exists — Sinônimo de array_key_exists
• key — Retorna uma chave de um array
• krsort — Ordena um array pelas chaves em ordem descrescente
• ksort — Ordena um array pelas chaves
• list — Cria variáveis como se fossem arrays
• natcasesort — Ordena um array utilizando o algoritmo da "ordem natural" sem
diferenciar maiúsculas e minúsculas
• natsort — Ordena um array utilizando o algoritmo da "ordem natural"
• next — Avança o ponteiro interno de um array
• pos — Sinônimo de current
• prev — Retrocede o ponteiro interno de um array
• range — Cria um array contendo uma faixa de elementos
• reset — Faz o ponteiro interno de um array apontar para o seu primeiro elemento
• rsort — Ordena um array em ordem descrescente
• shuffle — Mistura os elementos de um array
• sizeof — Sinônimo de count
• sort — Ordena um array
• uasort — Ordena um array utilizando uma função de comparação definida pelo
usuário e mantendo as associações entre chaves e valores
• uksort — Ordena um array pelas chaves utilizando uma função de comparação
definida pelo usuário.
• usort — Ordena um array pelos valores utilizando uma função de comparação
definida pelo usuário
Muitas vezes, quando nós vamos desenvolver algum projeto em PHP nos deparamos
com o conceito de MVC, em especial quando vamos utilizar alguma framework para
auxiliar no desenvolvimento e começam a surgir várias dúvidas
Muitas vezes, quando nós vamos desenvolver algum projeto em PHP nos deparamos
com o conceito de MVC, em especial quando vamos utilizar alguma framework para
auxiliar no desenvolvimento e começam a surgir várias dúvidas
O que é MVC?
MVC é antes de mais nada uma arquitetura que permite dividir o desenvolvimento da
aplicação em três camadas conceituais: Model, View e Controller (Modelo - Visão -
Controlador).
A model seria a parte da modelagem de dados e regras de negócio. É nela que vão
constar as classes , as consultas ao banco de dados e as regras de negócio do sistema.
A view é a parte estética, a interface. É a "tela" onde os dados e os links serão
apresentados ao usuário. De grosso modo, um arquivo somente com códigos HTML e
CSS (e se tiver, o Javascript também). Aprendendo MVC na prática
Agora
Sempre utilize “;” para finalizar qualquer comando. Podemos perceber que na
maquina que foi utilizado esse comando, foram encontrados cinco banco de
dados.
VARCHAR(M) strings de tamanho flexível entre 1 e 255 caracteres.
VARCHAR ocupa sempre o menor espaço possível, no entanto é 50% mais lento que o tipo CHAR.
INT(M)[Unsigned] números inteiros entre 2147483648 e 2147483647. A opção "unsigned" pode ser usada
na declaração mudando o intervalo para 0 e 4294967295 para inteiros não sinalizados.
FLOAT [(M,D)] números decimais com D casas decimais.
DATE: armazena informação relativa a datas. O formato default é 'YYYYMMDD' e as datas
variam entre '00000000' e '99991231'. MySQL provê um poderoso conjunto de
comandos para formatação e manipulação de datas.
TEXT/BLOB: strings entre 255 e 65535 caracteres. A diferença entre TEXT e BLOB é que no primeiro o
texto não é sensível ao caso e no segundo sim.
BIT ou BOOL um número inteiro que pode ser 0(falso) ou 1(verdadeiro).
DOUBLE número em vírgula flutuante de dupla precisão. Os valores permitidos vão desde
1.7976931348623157E+308 até 2.2250738585072014E308, 0 e desde
2.2250738585072014E308 até 1.7976931348623157E+308
Existem outros tipos de dados, para mais detalhes consulte o site oficial do MYSQL
(http://www.mysql.com/).
Abaixo temos exemplos dessas estruturas:
Tipos de dados e seus
respectivos tamanhos
Exemplo:
Nem todo tipo de dado tem um tamanho,
como por exemplo o tipo DATE. Além disso o
comando NULL significa que a informação
inicial daquele campo é nulo.
Para visualizar detalhes da tabela criada
utilize o comando DESCRIBE
'nome_da_tabela', veja o exemplo:
Exemplo:
Para exibir as tabelas use o
comando SHOW TABLES;
1.4.3 - DROP
Para apagar o banco de dados ou a tabela, usamos o comando DROP com a
seguinte sintaxe:
DROP DATABASE 'nome_do_banco'; //Usado para apagar o banco de
sados
DROP TABLE 'nome_da_tabela'; //Usado para apagar tabelas.
Exemplo:
1.5.1 - INSERT
Usado para inserir informações em uma tabela. Possui a seguinte sintaxe:
INSERT INTO nome_da_tabela(campo1,campo2,...,...)
VALUES(valor1,valor2,...,...);
1.5.2 - SELECT
Permite recuperar informações existentes nas tabelas. Sintaxe:
SELECT 'campo1','campo2',...,... FROM 'nome_da_tabela';
Exemplo:
Abaixo temos a exibição somente dos campos especificados após o SELECT.
Caso queira visualizar todos os dados utilize asteriscos(*) conforme a segunda
figura.
1.5.3 - UPDATE
Usado para atualização dos dados, que altera os valores dos campos em uma
tabela especificada com base em critérios específicos. Sintaxe:
UPDATE nome_da_tabela
SET campo1 = 'novo_valor',campo2 = 'novo_valor',...,...
WHERE critério;
Exemplo:
Imagine mais de 1000 registros e você precise alterar somente 1, nesse caso
usamos o critério sendo definido com o id, ou seja, a alteração é feita aonde o
id = 1, em nosso exemplo.
1.5.4 - DELETE
Remove registros de uma ou mais tabelas listadas na cláusula FROM que satisfaz a cláusula
WHERE. Sintaxe:
DELETE FROM nome_da_tabela WHERE critério;
Exemplo:
Foi deletado a informação do id 3;
Obs.: muito cuidado quando usar o comando DELETE. Caso o critério saia
errado por um erro do programador, poderá ser deletado todos os dados da
tabela.
PRIMARY KEY Chave primaria definida na criação da tabela, evitando duplicidade de dados em um
mesmo campo.
FOREIGN KEY Chave estrangeira definida na criação da tabela, usada para fazer ligações entre tabelas
de um banco de dados relacional.
Informações do
Menus servidor
Tela de comandos:
Ao
Apaga o registro.
Ao clicar teremos a
seguinte tela:
Agora basta editar os
valores.
1.8 – Exercícios
1°) Qual a definição que podemos atribuir ao conceito de banco de dados.
Perceba que no
resultado da Tabela
7.2 foi capturado
todos os campos da
tabela Aluno e da
tabela Professor e
que essas tabelas
têm campos com
nomes iguais. Caso
façamos uma
consulta dessa
forma:
O
MySQL ficará na dúvida de que tabela, Aluno ou Professor, será capturado os
dados da coluna nome e irá retornar um erro desse tipo:
Nesse
caso, para recuperálas, devemos eliminar a ambiguidade utilizando os nomes
das tabelas junto ao campo que está gerando ambiguidade. Veja o exemplo
abaixo:
Você
pode
usar
essa forma do SELECT, estudada nesse tópico, não só com duas tabelas, como
vimos acima, mas para cruzar dados de quantas tabelas você necessitar.
A consulta nos retornou todos os campos da tabela Aluno com os registro que
atendem a
seguinte condição: o dado armazenado no campo altura da tabela Aluno tem
que ser maior que o valor 1.80. Dessa forma podemos fazer vários tipos de
filtragens em nossas consultas.
Eis uma lista de algumas funções e operadores de comparação do MySQL
Server que podem ser utilizados(as) com o comando WHERE:
Eis uma lista dos operadores lógicos do MySQL Server que também podem ser
utilizados com o comando WHERE.
1.9.3 - ALIAS
ALIAS é um recurso que te permite, dentro do seu comando SELECT, dar a
uma tabela ou a uma coluna outro nome ou “apelido”, usando a palavrinha AS.
Esta pode ser uma boa coisa a fazer se você tem os nomes de tabelas ou
colunas muito extensos ou complexos. Um nome de alias poderia ser qualquer
coisa, mas geralmente é curto.
Vamos fazer uma consulta MySQL sem utilizar o ALIAS e outra utilizando esse
recurso. Vamos selecionar todos os professores do aluno Rapadura Doce,
usaremos como referência a tabela Aluno e Professor usadas anteriormente .
Como vimos no SELECT acima, ALIAS podem nos ajudar bastante nas consultas,
tanto para escrever como para ler as instruções SQL.
Não é permitido utilizar apelido de coluna em uma cláusula WHERE, por
exemplo:
Esse erro surgiu, pois tentamos utilizar fone, o apelido do campo telefone_aluno
na condição da cláusula WHERE.
1.9.4 – Exercícios
1ª) Crie uma tabela Aluno com as colunas nome (VARCHAR(255)), email
(VARCHAR(255)) telefone (VARCHAR(10)), altura (DECIMAL(3,2)) e aprovado
(TINYINT(1)).
3ª) Utilizando a cláusula WHERE refaça os exemplos criando uma consulta para
cada tipo de operador.
Observação: nas consultas utilize valores que façam sentido de acordo com os
valores que você inseriu na tabela.
→ AVG: Calcula a média de um conjunto de valores, onde pode ser uma coluna
numérica ou uma expressão numérica passada como um parâmetro.
→ MAX: Retorna o maior valor NOT NULL de uma dada coluna. Retorna NULL
se não houver colunas que atendam as condições de pesquisa.
→ MIN: Retorna o menor valor não NULL de uma certa coluna. Retorna NULL se
não houver linhas que atendam à condição de pesquisa.
Observação:
Variância é uma medida de dispersão. Busca avaliar o quanto os dados estão
dispersos. Para fazer essa avaliação, define-se uma medida de referência: a
média aritmética. Assim, a variância é uma medida que avalia o quanto os
dados estão dispersos em relação à média aritmética. Ou seja, o quanto os
dados estão afastados da média aritmética.
1.9.6 – GROUP BY
A instrução GROUP BY é usada em conjunto com as funções de agregação
para agrupar o conjunto de resultados de uma ou mais colunas.
Sintaxe SQL GROUP BY :
Agora queremos encontrar o valor total pago por cada cliente. Vamos ter de
usar a instrução GROUP BY para agrupar os clientes e depois somar os valores
de cada agrupamento usando a função de agregação SUM estudada no
anteriormente.
Nós usamos a seguinte instrução SQL:
Crie grupos com o seguinte critério, todos os registros que tenha no campo
Cliente da tabela Ordem valores iguais formaram um grupo. Então seguindo
esse critério vamos formar os grupos:
Agora que já temos nossos grupos formados vamos analisar a próxima parte da
instrução MySQL. Agora, analisaremos o seguinte trecho de código: SUM
(OrdemPreco). O que esse trecho da instrução faz é somar todos os valores do
campo OrdemPreço da tabela Grupo 1: Hansen e guarda, depois soma todos
os valores do campo OrdemPreço da tabela Grupo 2: Nilsen e guarda e faz
isso também com a tabela Grupo 3: Jensen.
1.9.7 – DISTINCT
Resultados repetidos de uma consulta podem ser eliminados através do
comando DISTINCT. Por exemplo, queremos obter uma lista das cidades onde
os alunos nasceram da tabela Aluno(criada anteriormente).
1.9.8 – LIMIT
A quantidade de resultados de uma consulta pode ser limitada através do
comando LIMIT. Na consulta abaixo, os 10 primeiros registros da tabela Aluno
são recuperados. Se a quantidade de registros nessa tabela for inferior a 10,
então todos os registros serão recuperados.
No
script acima criamos um índice para o campo número, onde esse índice indexa
de acordo com os 4 primeiros números, ou seja, o prefixo do telefone. Foi
inserido em nossas tabelas agenda e agenda_indexada 280 mil registros, os
quais serão usados para analisarmos o poder dos índices;
Legenda:
Existem três tipos de índices que podem ser criados. São eles:
UNIQUE: Os valores dos índices não se repetem, fazendo com que este fato
seja levado em conta em seu armazenamento.
FULLTEXT: Torna possível criar índices para campos de texto, inclusive para
uma faixa de caracteres iniciais se for o caso (somente para o mecanismo de
armazenamento e funcionamento MyISAM). Para criar um índice somente para
os n primeiros caracteres de uma coluna do tipo VARCHAR, utilize (n) após o
nome da coluna substituindo n pelo número de caracteres desejados.
contrário sua consulta ficará lenta, e será cada vez mais demorada na medida
em que o número de registros aumentarem em sua base de dados.
→ Crie índices com várias colunas de sua tabela.
Observação:
Ao remover uma tabela do sistema, automaticamente seus índices serão
excluídos.
1.10 - Relacionamentos
Os relacionamentos do banco de dados, são formas como as tabelas se
comportam e se relacionam com as outras tabelas, compartilhamento de
informações é a base, e melhoria da organização e filtragem dos dados é o
resultado dessas relações.
1.10.1 - Unique
Em alguns casos nossas tabelas precisam ter a garantia de que uma
determinada informação seja única dentre os registros. Por exemplo, uma
tabela Cliente poderíamos ter uma coluna cpf para representar o número do
CPF de um determinado cliente. Nesse caso seria interessante garantir que não
sejam inseridos na tabela dois clientes com o mesmo CPF ou que um cliente
não seja inserido duas vezes.
Para evitar esse tipo de problema poderíamos realizar uma consulta na tabela
Cliente antes de fazermos a inserção afim de verificarmos se já existe algum
cliente cadastrado com o CPF que desejamos inserir. Essa abordagem não seria
tão ruim se as operações realizadas em um banco de dados não ocorressem de
forma concorrente.
Em uma tabela podemos ter quantas colunas com a restrição UNIQUE forem
necessárias. Por exemplo, na tabela Aluno poderíamos ter a coluna
primeiro_nome definida com a restrição UNIQUE e a coluna sexo sem a
restrição. Ao tentarmos inserir um aluno do sexo masculino com o
primeiro_nome Yuki poderemos ter um problema, pois em alguns países o
nome Yuki pode ser usado tanto para homens quanto para mulheres. Nesse
caso poderíamos definir a restrição UNIQUE em um índice composto pelas
colunas primeiro_nome e sexo.
Fica claro que no exemplo dado acima a nossa tabela Aluno permitiria, no
máximo, a inserção de dois alunos com o primeiro nome Yuki: um do sexo
masculino e outro do sexo feminino. Para resolver esse problema podemos
adicionar outras colunas ao nosso índice composto que possui a restrição
UNIQUE, por exemplo.
Agora considere o exemplo abaixo que irá inserir os dados das cidades de
Tururu/CE e Bahia/BA na tabela criada.
Capítulo 2 – UML
Neste capítulo iremos aprender como instalar
e criar uma diagramação de classes para a
linguagem PHP.
UML significa: “Unified Modeling Language”,
ou seja,
“Linguagem de Modelagem Unificada”. Com o
UML, modelamos nosso código com o objetivo
de documentar e visualizar melhor o projeto.
2.1.1 – Visualização
→ A existência de um modelo visual facilita a comunicação e faz com que os
membros de um grupo tenham a mesma idéia do sistema.
→ Cada símbolo gráfico tem uma semântica bem definida.
2.1.2 - Especificação
→ É uma ferramenta poderosa para a especificação de diferentes aspectos
arquiteturais e de uso de um sistema.
2.1.3 - Construção
→ Geração automática de código a partir do modelo visual.
→ Geração do modelo visual a partir do código.
→ Ambientes de desenvolvimento de software atuais permitem:
→ Movimentações em ambos sentidos;
→ Manutenção da consistência entre as duas visões.
→ Pode incluir artefatos como:
2.1.4 - Documentação
→ Deliverables: (documentos como especificação de requisitos,
especificações funcionais, planos de teste, etc.).
→ Materiais que são importantes para controlar, medir, e refletir sobre um
sistema durante o seu desenvolvimento e implantação.
Neste Curso aprenderemos como trabalhar com Diagrama de Classe, pois esse
diagrama é bem próximo da criação e estruturação de classes e herança entre
as classes criadas.
Para criar os métodos, lembre-se que para o diagrama, primeiro vem o nome
da variável ou método, em seguida vem o seu tipo:
Dessa forma podemos criar qualquer classe com os seus atributos e métodos
de forma a poder visualizar melhor a estrutura do projeto.
Capítulo 3 – MVC
Neste capítulo iremos abordar um padrão
de desenvolvimento universal, o MVC
(Model/View/Controller). Este padrão server
basicamente para organizar e otimizar
qualquer projeto
3.2 - Organização
No MVC possuímos três camadas básicas, e cada uma delas, com suas
características e funções bem definidas para facilitar a sua vida, caro
programador.
3.2.1 - View
A visão (view) é responsável por tudo que o usuário final visualiza, toda a
interface, informação, não importando sua fonte de origem, é exibida graças a
camada de visão, no caso do PHP, as views são praticamente o HTML e
tecnologias afins.
Exemplos de Views:
→ Formulários
→ Tabelas
→ Listas
3.2.2 - Control
A Controladora (controller), como o nome já sugere, é responsável por controlar
todo o fluxo de informação que passa pelo site/sistema. É na controladora que
se decide “se”, “o que”, “quando” e “onde” deve funcionar. Define quais
informações devem ser geradas, quais regras devem ser acionadas e para
onde as informações devem ir, é na controladora que essas operações devem
ser executadas. Em resumo, é a controladora que executa uma regra de
negócio (modelo) e repassa a informação para a visualização (visão). Simples
não?
3.2.3 - Model
O modelo (Model) é utilizado para manipular informações de forma mais
detalhada, sendo recomendado que, sempre que possível, se utilize dos
modelos para realizar consultas, cálculos e todas as regras de negócio do nosso
site ou sistema. É o modelo que tem acesso a toda e qualquer informação
sendo essa vinda de um banco de dados, arquivo XML, etc.
Com o
formulário acima percebemos que os dados(email e senha) serão enviados
O controller irá incluir esse model, e invocar sua função, observer o Controller:
Mas não pense que apenas implementar o PDO já torna sua aplicação segura,
precisaremos de uma forma de padrão de projeto, o PDO é apenas um recurso
pra auxiliar sua aplicação, o restante é feito por você.
Enfim, utilizaremos o PDO com o driver do MySQL, já que é o banco que
estamos usando.
Passamos as informações:
host(servidor): localhost, onde normalmente está instalado o banco de dados.
dbname(Nome do Banco): É o próprio nome do banco de dados.
Usuário: é o usuário do banco de dados, normalmente vai ser o root.
Senha: é a senha que você escolheu para o usuário.
Agora além disso perceba aquela variável $comp na primeira, ela informa que
haverá um comando inicial, no caso SET NAMES utf8 que seta que por padrão a
cadeia de caracteres utilizada é a utf8, que aceita caracteres acentuados.
Essa é uma forma de fazer conexão, agora perceba a seguir uma forma mais
organizada, que usa Orientação a Objetos, ou melhor, criaremos uma classe de
Conexão e sempre que precisarmos dela instanciaremos um objeto da mesma.
Perceba que para este método funcionar precisamos passar $name, $email, e
$senha, e ele se encarregará de inserir na tabela tb_user. Na primeira linha do
método instanciamos a classe Connect, criando o $pdo que já contém o retorno
do método getInstance, ou seja, o link de conexão com o banco de dados.
Logo após, nos criamos a $query que contém o comando para inserir os dados,
agora note que nós informamos :name:, :email:, e :password:, e isso é uma
técnica segura, pois evitará SQL Injection, na linha seguinte preparamos a
query, e em seguida filtramos os valores e substituímos os parâmetros pelos
valores agora filtrados.
Pronto, agora é só executar a query, e caso funcione, retornaremos o id que foi
gerado pela inserção.
Resultado:
Veja que o que mudou em relação ao outro método, é porque este recebe um
parâmetro(email) e na criação da consulta informamos o WHERE, e como no
método para inserir não passamos o valor diretamente, precisamos filtrá-lo e
substituí-lo para que funciona, com isso a consulta trará apenas os registros
que possuírem o campo email contendo o valor do $email que foi passado.
Vamos lá, vamos criar um método para excluir por id, costumo dizer que este é
o mais simples, veja:
Pois bem, por aqui finalizamos o conteúdo de PDO, claro que tudo que foi visto
é o básico, existe muito mais códigos que precisamos aprender e que não
caberiam nessa apostila. Mas agora fica com você o dever de estudar e
repassar o conhecimento.
Com esse capítulo também encerramos a apostila, bons estudos.
Posfácio
Parabéns, você concluiu o curso para Padawan em PHP-OO com Boostrap &
MySQL. Mas você não deve parar por aqui, você deve conhecer a verdade e
dominar o mundo. O próximo passo é estudar algum framework(Zend, Cake,
Yii, CodeIgniter, etc).
Mas antes de escolher, você deve entender que a maior parte dos
programadores não está pronta para a verdade, e muitos são tão inertes, tão
dependentes de sistemas que lutariam até mesmo para impedi-lo de se tornar
um programador foderoso.
Então que a Força esteja com você, lembre-se, com programação tudo é
possível, basta ter os códigos e a lógica certa.
Alessandro Feitoza