Você está na página 1de 60

Fundamentos e boas

práticas em programação
PHP
Parte 1
Aula 1
● Introdução;
● Montagem do ambiente de desenvolvimento;
● Diferença entre o que é executado no servidor e no cliente;
● Conceitos importantes sobre HTTP;
● Exercícios.
Introdução
PHP é o acrônimo para "PHP: Hypertext Preprocessor", mas originalmente
significava "Personal Home Page".

É uma linguagem de script open source de uso geral e que pode ser embutida
dentro do HTML.

Com o PHP podemos criar scripts que são executados no servidor web, scripts de
linha de comando e escrever aplicações desktop (PHP-GTK).
Introdução
A abordagem desse curso utiliza o PHP executado como script no servidor web.

index.php (servidor) servidor web (apache) index.php (cliente)

<html> <html>
<head></head> <head></head>
<body> <body>
<?php echo "Oi"; ?> Oi
</body> </body>
</html> </html>
Montagem do Ambiente de Desenvolvimento
Existe um ambiente de desenvolvimento padronizado que utiliza Ansible para
automatizar a configuração e o Vagrant para gerenciar a máquina virtual.

Localização do projeto do ambiente de desenvolvimento (intranet):

● https://svn.intranet.stm/repos/ansible/trunk

Comandos para gerenciar a máquina virtual (dentro da pasta do ansible):

● Ligar: $ vagrant up symfony


● Desligar: $ vagrant halt symfony
Montagem do Ambiente de Desenvolvimento
Deve-se verificar se a instalação ocorreu com sucesso:

● http://symfony.desenv.stm/

Deve-se utilizar uma ferramenta que permita realizar upload FTP para a máquina
virtual.

● Host: 127.0.0.1:2222
● Usuário: vagrant
● Senha: vagrant
● Diretório raíz: /var/www/html
Conceitos HTTP
HTTP é a sigla para o Protocolo de Transferência de Hipertexto, utilizado como
base para a comunicação de dados na Internet (definido na RFC2616), e
baseado nas requisições do cliente e respostas do servidor.

Basicamente, o cliente envia um pacote de dados para um recurso no servidor


web, identificado na URI, e o servidor devolve uma resposta para o cliente.

Os principais métodos HTTP utilizados são o GET e o POST, mas no caso de


interfaces REST também são utilizados o PUT e o DELETE.
Conceitos HTTP
O método GET recupera as informações na URI (Identificador Uniforme de
Recursos) da requisição.

Exemplos:

● https://www.google.com.br/search?q=metodo+get
● http://facpres.stm.jus.br/GuiasTISS/Logon?origemStm=beneficiario
● https://www2.stm.jus.br/info_servidores/index.php/ctrl_servidor/localizar/cdes
c
Conceitos HTTP
O método POST recupera as informações, contidas em um FORM HTML,
enviadas na área de dados da requisição.

Exemplos (acione as ferramentas do desenvolvedor no seu browser antes de


acessar a URI - o POST ocorre ao enviar o formulário):

● https://www2.stm.jus.br/portal_apps/index.php/ctrl_logon/
● http://www.receita.fazenda.gov.br/Aplicacoes/Atrjo/ConsRest/Atual.app/pagin
as/index.asp
Diferenças - servidor X cliente
A execução de scripts PHP no lado do servidor permite a customização do HTML
e códigos em JavaScript que serão executados na máquina do cliente.

Segue um exemplo prático.


Diferenças - servidor X cliente
Considere o seguinte trecho de código PHP:
Diferenças - servidor X cliente
Após o servidor web interpretar o PHP, responde da seguinte forma ao cliente:
Diferenças - servidor X cliente
Após a execução do JavaScript no navegador do cliente, o HTML se transformou
para:
Diferenças - servidor X cliente
Resultado final na página web:
Exercícios
Utilizando as ferramentas para desenvolvedores do seu navegador:

1. Acesse a página de login do portal APPS do STM -


https://www2.stm.jus.br/portal_apps/index.php/ctrl_logon
1.1. Qual método HTTP foi utilizado para acessar a página?
1.2. Preencha as informações do formulário de login e clique em "Entrar":
1.2.1. Qual método HTTP foi utilizado para tentar realizar o login?
1.2.2. Identifique quais informações foram enviadas ao servidor
1.3. Altere a imagem da logo JMU no topo da página por outra logo existente na internet.
Exercícios
Utilizando as ferramentas para desenvolvedores do seu navegador:

2. Acesse a página de login do webPlan do STM -


http://facpres.stm.jus.br/GuiasTISS/Logon?origemStm=beneficiario
2.1. Identifique o código JavaScript que está utilizando o parâmetro passado na URI;
2.2. Altere o comportamento da tela trocando o parâmetro que está sendo passado na URI (valor
do parâmetro prestador);
2.3. Utilize o console para aplicar comandos JavaScript na tela e alterar o comportamento da tela
(semelhante ao valor do parâmetro odonto). Não altere o parâmetro da URI.
Aula 2
● Sintaxe básica;
● Tipos, variáveis, constantes e comentários;
● Expressões e operadores;
● Estruturas de controle;
● Exercícios.
Sintaxe básica
Quando o servidor interpreta um arquivo, procura-se as tags de abertura "<?php"
e de fechamento "?>", para decidir quais trechos do arquivo serão interpretados
como PHP.
Sintaxe básica
Nos arquivos PHP que não são direcionados à exibição, geralmente abre-se a tag
mas não a fecha. Dessa forma: o arquivo não aceitará caracteres em desacordo
com a sintaxe do PHP; e evitará o envio de caracteres de forma acidental.
Comentários
Para comentários em apenas uma linha, utiliza-se "//" ou "#".

Para comentários em múltiplas linhas, inicia-se com "/*" e termina com "*/".
Tipos
Os tipos disponíveis no PHP são:

● Booleano:
○ Valores: true / false;
○ São considerados falsos:
■ false
■ 0
■ 0.0
■ ""
■ "0"
■ Array()
■ null
Tipos
● Inteiro:
○ 35
○ -35
○ 048 (octal)
○ 0x23 (hexadecimal)
○ 0b100011 (binário)

Observação: Em caso de overflow, o inteiro se torna um tipo ponto flutuante.


Tipos
● Ponto flutuante:
○ 0.35
○ 3.5e-1

Observações:

● Cuidado com a propagação de erros: A precisão máxima é a ordem de


1.11e-16;
● A representação interna é binária, dessa forma operações em números
racionais exatos na base 10 podem ser imprecisos;
● Não confie em resultados até a última casa.
Tipos
● Strings: Uma série de caracteres:
○ Aspas simples;
○ Nowdoc;

○ Aspas duplas;
○ Heredoc;
Tipos
● Array:
○ mapa ordenado pela chave;
○ A chave deve ser inteiro ou string;
○ O valor pode ser qualquer tipo;
Tipos
● Objetos:
○ Para instanciar um novo objeto utilize a palavra reservada "new";
○ Para acessar uma função, utilize seta com traço simples " ->";
○ Para acessar constantes, utilize "::";
Constantes
A constante é um identificador para um único valor.
Variáveis
As variáveis são representadas pelo cifrão ($) seguido pelo nome.

● São case-sensitive;
● Devem começar por letra ou o caracter '_';
○ Seguido por letra, número ou o caracter '_';
● Não é necessário inicializar uma variável, contudo é uma boa prática;
Expressões e Operadores
Aritméticos:
Adição (+) Divisão (/)
Subtração (-) Módulo (%)
Multiplicação (*) Exponencial (**)

String:
Concatenação (.)
Expressões e Operadores
Atribuição

Atribuição (=) Divide e Atribui (/=)


Soma e Atribui (+=) Módulo e Atribui (%=)
Subtrai e Atribui (-=) Concatena e Atribui (.=)
Multiplica e Atribui (*=)

Comparação
Semelhante (==) Menor que (<)
Semelhante e do mesmo tipo (===) Maior que (>)
Diferente (!=) ou (<>) Menor ou igual que (<=)
Não semelhante ou do mesmo tipo (!==) Maior ou igual que (>=)
Expressões e Operadores
Incremento e Decremento
<variavel>++ Retorna o valor e depois incrementa 1

++<variavel> Incrementa 1 e depois retorna o valor

<variavel>-- Retorna o valor de depois decrementa 1

--<variavel> Decrementa 1 e depois retorna o valor


Expressões e Operadores
Controle de erros:

● O sinal de arroba (@), quando precede alguma expressão PHP, suprime


qualquer mensagem de erro;
● Má prática de programação;
● Deve-se evitar e tratar os erros;

Lógicos:
E (&&) (and) NÃO (!)
OU (||) (or) XOR (xor)
Estruturas de Controle
Estruturas de Controle
Estruturas de Controle
Estruturas de Controle
Estruturas de Controle
Break: Finaliza a execução da estrutura (for, foreach, while, switch). O parâmetro,
opcional, indica quantas estruturas aninhadas serão interrompidas.

Continue: Continua para a próxima iteração ou fim do switch. O parâmetro,


opcional, indica quantas estruturas aninhadas será ignorado o resto da iteração.
Estruturas de Controle
Exercícios
Utilizando a máquina virtual "symfony" e um arquivo ".php":

1. Preencha uma variável do tipo array com números inteiros de 1 até 100.
Utilizar estrutura de loop "for";
1.1. Some os números pares e subtraia os números ímpares, ou seja (-1+2-3+4…).
1.1.1. Utilizar estrutura de loop "foreach".
1.1.2. Exibir na tela o resultado final;
1.2. Some apenas os números que são divisíveis por 5 e subtraia os números divisíveis por 3, ou
seja (-3+5-6-9+10…).
1.2.1. Utilizar o operador (%).
1.2.2. Exibir na tela o resultado final;
Aula 3
● Conversão de tipos de dados;
● Funções para manipulação de strings;
● Funções para manipulação de arrays;
● Exercícios.
Conversão de Tipos de Dados
O PHP não obriga a declaração explícita do tipo da variável durante a criação.
Dessa forma, o tipo da variável é determinado pelo contexto em que a variável
está sendo utilizada.

Na conversão automática de tipos, existe um tipo dominante para cada conjunto


de operações. Float domina operações com inteiro e strings e o tipo numérico
domina operações com strings.
Conversão de Tipo de Dados
A conversão de tipos explícita ocorre como na linguagem "C", o nome do tipo
desejado é escrito entre parênteses antes da variável.

As conversões permitidas são: integer, boolean, float, string, array, object e unset.
Funções para manipulação de strings
As principais funções para manipulação de strings são:

● void echo(string $arg1 [, string ...])


○ Não é obrigatório o uso dos parênteses;
○ Admite mais de um parâmetro;
Funções para manipulação de strings
● array explode(string $delimiter, string $string [, int $limit])
○ Transforma um string em um array de strings;
Funções para manipulação de strings
● string implode(string $glue, array $pieces)
○ Retorna um string contendo os elementos do array ligados pela string $glue;
Funções para manipulação de strings
● string trim(string $str [, string $charlist])
○ Remove caracteres do início e final do string;
○ O segundo parâmetro possui o valor default de: Espaço vazio; Tabulação; Nova linha;
Retorno de carro; Byte null; Tabulação vertical.
Funções para manipulação de strings
● string number_format(float $num [, int $dec [, String $sepD, String $sepM]])
○ Formata um número com separador de milhar;
○ Caso o segundo parâmetro seja informado, será adicionado o separador decimal;
○ O terceiro e quarto parâmetros servem para alterar os separadores;
Funções para manipulação de strings
● string str_pad(string $input, int $tam [, string $pad [, int $type]])
○ Preenche um string com certo tamanho utilizando outro string;
○ Por padrão utiliza espaços para completar o string;
○ Se o tipo do preenchimento não for especificado, assume-se à direita;
Funções para manipulação de strings
● string str_replace(mixed $origem, mixed $destino, string $original [, int cont])
○ Retorna um string com todas as ocorrências de origem substituídas por todas as ocorrências
de destino em um determinado string original.
Funções para manipulação de strings
● string strpos(string $str, string $needle [, int offset])
○ Procura a posição de um determinado string dentro do string principal
Funções para manipulação de arrays
As principais funções para manipulação de arrays são:

● array array([mixed $... ])


○ Cria um array
Funções para manipulação de arrays
● array array_diff(array $arr1, array $arr2 [, array $arr...])
○ Compara o array 1 com os demais arrays e retorna os elementos que estão presentes no
array 1 e não estão presentes nos demais arrays.
Funções para manipulação de arrays
● array array_intersect(array $arr1, array $arr2 [, array $arr...])
○ Retorna todos os elementos do array 1 que existem nos outros arrays
Funções para manipulação de arrays
● array array_merge(array $arr1, array $arr2 [, array $arr...])
○ Realiza a fusão entre os arrays
Funções para manipulação de arrays
● mixed array_search(mixed $needle, array $origem [, bool $strinct = false])
○ Realiza uma busca por valores do array e retorna a chave do array que possui o valor;
○ O último parâmetro indica se deve verificar o tipo da variável também;
Funções para manipulação de arrays
● bool sort(array $array [, int $flags])
○ Ordena um array;
○ O segundo parâmetro indica se deseja alterar a forma de comparação (modifica o tipo);
Funções para manipulação de arrays
● bool asort(array $array [, int $flags])
○ Ordena o array e mantém a relação entre a chave e valor
Funções para manipulação de arrays
● int count(mixed $var [, int mode])
○ Conta a quantidade de elementos de um array, ou propriedades de um objeto;
○ O segundo parâmetro indica se deve contar recursivamente;
Funções para manipulação de arrays
● bool isset(mixed $var [, mixed $v...])
○ Verifica se as variáveis foram iniciadas;
○ Especialmente útil para evitar acessos em posições do array que não existem;
Exercícios
Utilizando a máquina virtual "symfony" e um arquivo ".php", defina as seguintes
variáveis no início do programa:

$lista_frutas = "laranja|banana|abacate|maca|goiaba|abacaxi|uva";

1. Gere uma variável do tipo array com as frutas definidas na variavel


"lista_frutas" (separador é o caracter | );
2. Ordene a lista de frutas em ordem alfabética;
3. Gere uma tabela HTML com a listagem das frutas (utilize foreach)
4. As linhas da tabela que contiverem "abacate" ou "abacaxi" deverão estar em
negrito (utilize strpos).

Você também pode gostar