Skip to content

Latest commit

 

History

History
1344 lines (884 loc) · 21.6 KB

README.md

File metadata and controls

1344 lines (884 loc) · 21.6 KB

PHP Mastery

https://codeexperts.com.br/

  1. 1. Seja Bem Vindo
  2. 2. Um Pouco de Contexto
  3. 3. Configurando Ambientes
  4. 4. Iniciando com PHP
  5. 5. Operadores
  6. 6. Estruturas de Controle: Condicional
  7. 7. Arrays & Estruturas de Repetição
  8. 8. Iniciando Mini-Projeto
  9. 9. PHP & Formulários
  10. 10. Começando com Banco de Dados
  11. 11. PHP & Banco de Dados
  12. 12. Funções & Organizando CRUD
  13. 13. Estilizando Painel e Upload de Arquivos
  14. 14. Session, Cookies & Autenticação
  15. 15. Banco de Dados: Falando Sobre Relacionamentos
  16. 16. Concluindo Mini Projeto
  17. 17. Iniciando com Orientação a Objetos
  18. 18. Relação entre Objetos
  19. 19. Mais Recursos OO
  20. 20. PHP 8: Novidades & Atualização + Ecossistema
  21. 21. Autoload & Namespaces
  22. 22. Importante: Métodos Mágicos & Exceptions
  23. 23. MVC com PHP

1 - Bem Vindo

2 - Quem Sou Eu

3 - Sobre a Plataforma

Voltar ao Índice


4 - Um Pouco de História

5 - PHP: Características

6 - O Que Preciso para Programar PHP

7 - Ambientes Prontos PHP

8 - Linguagem Server Side

Voltar ao Índice


9 - [Windows] Instalando PHP

10 - [Windows] Instalando Composer

11 - [Windows] Instalando Editor de Código

12 - [Windows] Olá Mundo

13 - [Linux] Instalando PHP & Composer

14 - [Linux] Instalando Editor de Código

15 - [Linux] Olá Mundo

16 - [MacOS] Instalando PHP

17 - [MacOS] Instalando Editor de Código

18 - [MacOS] Olá Mundo

19 - [MacOS] Instalando Compose


$composer up -d

Voltar ao Índice


20 - Introdução

21 - Comentários

22 - Valores Literais

23 - Tipos Básicos

<?php

echo "<br>";
//Com tipo Inteiro
echo 10000;

echo "<br>";
//Com tipo string: caracteres
echo "Olá Mundo";

echo "<br>";
//Com tipo Booleano
echo true; //exibe o valor 1

echo "<br>";

echo false; // não exibe nada

echo "<br>";
//Com tipo Ponto Flutuante
echo 19.99;
echo "<br>";
echo 1099.90;

24 - Inteiros / Ponto Flutuante

<?php
echo "<br>";
//inteiros 1,2,3,4,5,6,7,8,9 -1, -2
echo -2;
echo "<br>";
echo 2;

echo "<br>";

//Sistema Octal no PHP
//Prefixado 0
echo 0777; //retorna 511 

echo "<br>";
//Sistema Hexadecimal
//Prefixado com 0x
echo 0x1FF; //retorna 511

echo "<br>";

//Float
echo 10.99;
echo "<br>";
echo 0.90;

echo "<br>";

echo "<br>";
/*apesar de retornar 1, por conta do . 
o php entende como float
*/
echo 1.0; 
//Retorna o tipo do dados informado no gettype
echo gettype(1.0); // double 

echo "<br>";

/*
Contantes tamanho minimo e maximo 
suportado pelo PHP para tipo inteiro
*/
echo PHP_INT_MIN; // -9223372036854775808
echo "<br>";
echo PHP_INT_MAX; // 9223372036854775807

echo "<br>";
echo "<br>";

/*
Contantes tamanho minimo e maximo 
suportado pelo PHP para tipo float
*/
echo PHP_FLOAT_MIN; // 2.2250738585072E-308
echo "<br>";
echo PHP_FLOAT_MAX; // 1.7976931348623E+308

echo "<br>";

//Exponencial: 13.3 (E)levado a 10 +2 
//(a virgula se movimenta 2 casas para a direita por conta do +2)
echo 13.3e+2; //Res.: 1300.00
echo "<br>";

//Exponencial: 13.3 (E)levado a 10 -3 
//(a virgula se movimenta 3 casas para a esquerda por conta do -3)
echo 13.3e-3; // Res.: 0.0133

25 - Strings

<?php
echo "<br>";
echo "Isto é uma string...";
echo "<br>";
echo gettype("Isto é uma string...");

echo '<br>';
echo 'Isto é uma string com aspas simples...';
echo '<br>';
echo gettype('Isto é uma string...');

echo '<br>';

echo "PHP"[1]; // H
echo "<br>";
echo "ABC"[-3]; //indice negativos: PHP 7.1...
echo "<br>";
echo "Estou programando com " . "PHP";

echo "<br>";

echo 'Quero aprender \'PHP\'';

echo "<br>";

echo "Quero aprender \\ \"PHP\"";

echo "<br>";

echo "dsndsididnisd dsds
ddsidnsidnsidnsindisd 
dsdd dsodoskdoskdoksod dsokdsod
sdosdsodksokdoskdo dksodksodkso";

//NOWDOC e HEREDOC

Isto é uma string...
string
Isto é uma string com aspas simples...
string
H
A
Estou programando com PHP
Quero aprender 'PHP'
Quero aprender \ "PHP"
dsndsididnisd dsds ddsidnsidnsidnsindisd dsdd dsodoskdoskdoksod dsokdsod sdosdsodksokdoskdo dksodksodkso

26 - Funções de Manipulação de Strings

<?php

//Conta os caracteres
echo strlen("Testando Strings"); // 16
echo "<br>";

//Pegar parte da string
//Pega a partir da posição 0, 7 caracteres
echo substr("Testando Strings", 0, 7); // Testand
echo "<br>";

//Pega a partir da posição -4(i), 2(in) caracteres
echo substr("Testando Strings", -4, 2); // in

echo "<br>";

//Pega da posição 7 até o fim da strings
echo substr("Testando Strings", 7); // o Strings

echo "<br>";
//Pega da posição -7 até o fim da string
echo substr("Testando Strings", -7); // Strings

//adicionar caracteres extras

echo "<br>";
echo str_pad("Testee", 8, "-", STR_PAD_BOTH); // -Testee-

//maiusculo e minusculo
echo '<br>';
echo strtoupper("fica maiuscula!"); // FICA MAIUSCULA!
echo '<br>';
echo strtolower("FICA MINUSCULA"); // fica minuscula

//encontrar uma ocorrencia de caracter
echo '<br>';
echo strstr("image.jpeg", "."); // .jpeg

echo '<br>';
echo strchr("image.png", "."); // .png

//substituir caracteres
echo '<br>';
echo str_replace("A", "x", "batata"); // batata
echo '<br>';
echo str_ireplace("A", "x", "batata"); // bxtxtx

27 - Variáveis

REGRAS NOMES VARIÁVEIS

  • VARIÁVEIS COMEÇAM COM: $;
  • NOMES PODEM INICIAR COM UMA LETRA OU _(UNDERLINE);
  • EXISTE DIFERENÇAS ENTRE MAIÚSCULAS E MINÚSCULAS (CASE SENSITIVE);

28 - Praticando Variáveis

<?php

//O operador de atribuição: =
$nome = 'JOSE MALCHER';

$anos = 38;

echo $nome . ' têm ' . $anos . ' anos.'; // JOSE MALCHER têm 30 anos.

29 - Diferença Aspas Simples e Duplas

<?php

//O operador de atribuição: =
$nome = 'Malcher';
$anos = 38;

//usando aspas simples
echo '$nome têm $anos anos'; // $nome têm $anos anos

echo '<br>';

//usando aspas duplas
echo "{$nome}'s têm $anos anos"; // Nandersons têm 30 anos

30 - NOWDOC & HEREDOC

<?php
$nome = 'João';
$cargo = 'Desenvolvedor';

/*
HEREDOC: Permite uma escrita com mais
liberdade e interpreta códigos dinâmicos
no texto.
*/

echo <<<HEREDOC
Olá sou $nome, atuo como $cargo. <br>
HEREDOC;
// Olá sou João, atuo como Desenvolvedor.

echo <<<'NOWDOC'
Olá sou $nome, atuo como $cargo. <br>
NOWDOC;
// Olá sou $nome, atuo como $cargo.

31 - Case Sensitive

<?php

//O PHP diferencia escritas de variáveis
//maiusculas e minusculas em seus nomes.

$idade = 30;
$Idade = 40;
$IDADE = 50;

echo $idade; // 30

echo '<br>';
echo $Idade; // 40

echo '<br>';
echo $IDADE; // 50

32 - Constantes

<?php
//Definindo constante
define('LINK_SITE', 'http://codeexperts.com.br');

echo LINK_SITE; // http://codeexperts.com.br

echo '<br>';
echo '<br>';

//Algumas constantes do PHP
echo 'Constante PHP Versão:' . PHP_VERSION; // Constante PHP Versão:8.3.2
echo '<br>';
echo 'Meu sistema é ' . PHP_OS; // Meu sistema é Linux

echo '<br>';
echo '<br>';
echo 'Estamos na pasta: ' . __DIR__;
// Estamos na pasta: /var/www/html/php-basico

echo '<br>';
echo '<br>';
echo 'Estamos na pasta: ' . __FILE__;
// Estamos na pasta: /var/www/html/php-basico/constantes.php

33 - Dinâmica e Fracamente Tipada

<?php
//php entende o tipo como string pelo valor passado
$nome = 'José';
echo gettype($nome); // string

echo '<br>';

$nome = (string) 10;

echo gettype($nome); // string

//echo $nome; //um valor string na variável nome

34 - Conclusões Módulo

Voltar ao Índice


35 - Introdução

36 - Operadores Aritméticos

<?php

$num1 = 10;
$num2 = 20;

//Adição: +
echo $num1 + $num2;
echo '<br>';

//Subtração: -
echo $num1 - $num2;
echo '<br>';

//Multiplicação: *
echo $num1 * $num2;
echo '<br>';

//Divisão: /
echo $num1 / $num2;
echo '<br>';

//Módulo: % (Resto da Divisão)
echo $num1 % $num2;
echo '<br>';

echo 3 ** 4; //3 * 3 * 3 * 3 = 81

echo '<br>';

//Precência de operadores
echo 10 + 2 * 5; // 20

37 - Operadores Comparação

<?php

$num1 = "30";
$num2 = 30;


//Igualdade: == ou ===
print $num1 == $num2; //Compara valor
print "<br>";
print $num1 === $num2;//Compara valor e tipo

$num1 = "20";

//Operadores de Diferença
print $num1 != $num2; //Diferença Valor
print "<br>";
print $num1 <> $num2; //Diferença Valor
print "<br>";

//Operador de não indentico: Tipo e Valor
print $num1 !== $num2;

//Operadores de Comparação Maior ou Maior Igual:
print '<br>';

$num1 = 10;
$num2 = 10;

print $num1 . ' não é maior que ' . $num2;
print '<br>';
print $num1 > $num2;
print '<br>';
print $num1 >= $num2;

//Menor ou Igual

$num1 = 30;
$num2 = 30;

print '<br>';
print $num1 < $num2; //verdeiro
print '<br>';

//10 não é igual a 30 mas continua sendo menor que 30
print $num1 <= $num2;

38 - Spaceship Operator

//Uso do Operador de Comparação Spaceship: <=>

$num1 = 2;
$num2 = 1;

print '<br>';
print 'Uso do Spaceship Operator';
print '<br>';

print $num1 <=> $num2; //1

print '<br>';
print $num2 <=> $num1; // -1

print '<br>';
print $num2 <=> $num2; // 0

39 - Operadores de Atribuição

<?php

$num = 10;

$num += 5; //$num = $num + 5;

echo $num; // 15
echo '<br>';


$num = 10;

$num -= 5; //$num = $num - 5;

echo $num; // 5
echo '<br>';

$num = 10;

$num *= 5; //$num = $num * 5;

echo $num; // 50
echo '<br>';


$num = 10;

$num /= 5; //$num = $num / 5;

echo $num; // 2

echo '<br>';

$nome = "João";

$nome .=  " Castro"; //$nome . " Castro";

echo $nome; // João Castro

40 - Operadores Lógicos

<?php

// OR ou || e XOR

//O ou lógico (OR ou ||) retorna verdadeiro
//se um ou ambos os lados retornarem verdadeiro
echo true || true || true; // 1

echo '<br>';

//Um lado ou outro podem retornar verdadeiro
//mas não ambos.
echo true XOR false;

//E lógico: AND ou &&
echo '<br>';

//Todos os testes devem ser verdadeiros
//Para que o E lógico retorne verdadeiro
echo true AND true && true;

//Negação
echo '<br>';

// negando um verdadeiro temos false
// negando um falso, temos verdadeiro,
// negação com negação retorna verdadeiro
echo !true;

41 - Combinando Operadores Lógicos e Comparação

<?php

$nome = '';
$email = '';

/*
Quero validar que todos os
campos(aqui representados por variáveis)
sejam preenchidos...
*/
echo $nome == '' || $email == ''; // Verdadeiro


//Se o usuário tem a idade esperada pelo sistema...

$idade = 30;
$idadeUsuario = 21;

echo "<br>";

/**
 * Se o usuário não colocar uma idade esperada,
 * que é 30, a comparação retorna false, quando
 * eu nego essse resultado, com !, eu obtenho
 * uma comprovação do resultado da comparação.
 *
 */
echo !($idade == $idadeUsuario);



/*
 Verificar se o usuário tem uma idade entre
 um espaço ou range interno do sistema.
 Ex.: Ter entre 21 e 30 anos.
 */
echo '<br>';

$idadeMinima = 21;
$idadeMaxima = 30;

$idadeUsuario = 31;


echo $idadeUsuario >= $idadeMinima
    && $idadeUsuario <= $idadeMaxima;

42 - Operador Incremento e Decremento

<?php

$num = 1;

//$num = $num + 1;
echo $num++;
echo '<br>';
echo $num;

echo '<br>';

echo ++$num; //$num + 1 : 3
echo '<br>';
echo $num; // 3


//$num = $num - 1;
echo '<br>';

echo $num--; //3
echo '<br>';
echo $num; //2
echo '<br>';

echo --$num; // 1
echo '<br>';
echo $num; //1

43 - Conclusões

Voltar ao Índice


44 - Introdução

45 - Algoritmos?

46 - Iniciando com Estrutrura Condicional

47 - Primeiras Estruturas Condicionais

<?php
//Sintaxe básica de condicionais...

if (false) {
  echo "A condição foi satisfeita...";
} else {
  echo "A condição não foi satisfeita...";
}

//Sintaxe alternativa...

if (false) :
  echo "A condição foi satisfeita...";
else :
  echo "A condição não foi satisfeita...";
endif;

48 - Senão Se

<?php

$countString = strlen('Carlos'); //6

if ($countString == 5) {

    echo "String possui 5 caracteres...";

} else if ($countString == 6) {

    echo "String possui 6 caracteres...";

} else {

    echo "A string não possui cinco caracteres...";

}


if ($countString == 5):

    echo "String possui 5 caracteres...";
elseif ($countString == 6):

    echo "String possui 6 caracteres...";
else:

    echo "A string não possui cinco caracteres...";
endif;

49 - Switch

<?php

$fruta = "manga";

switch ($fruta) {
    //Colocar os testes a serem executados...
    case "maçã":
        echo "A fruta recebida é maçã!";
        break;

    case "laranja":
        echo "A fruta recebida é laranja!";
        break;

    case "uva":
        echo "A fruta recebida é uva!";
        break;

    default:
        echo "A fruta não é servida aqui...";
}

50 - Operador Ternário

<?php

$num = 20;

echo $num == 10 ? "Sim, é igual a 10"
  : "Não é igual a 10";
echo '<br>';

$valorRecebido = $num == 20 ? "O valor recebido é 20"
  : "O valor não é 20";

echo $valorRecebido;

echo '<br>';

$quantidade = 0;

$quantidadeRecebida = $quantidade ?: -1;

echo $quantidadeRecebida;

51 - Mais da Escrita do If

<?php

$idadeMinima = 21;
$idadeMaxima = 30;

$idadeUsuario = 31;


if($idadeUsuario >= $idadeMinima && $idadeUsuario <= $idadeMaxima)
  echo "Você possui a idade esperada!";

52 - Conclusões

Voltar ao Índice


53 - Introdução

54 - Arrays?

55 - Praticando Arrays

<?php

//Escrita padrão de arrays
$listaFrutas = array('laranja', 'maçã', 'uva');

//Escrita Reduzida: short-syntax ou sintaxe reduzida
//Está disponivel desde php 5.4+
//$listaFrutas = ['laranja', 'maçã', 'uva'];

//Acessando Indicies do array
echo $listaFrutas[0];
echo '<br>';


echo $listaFrutas[1];
echo '<br>';

echo $listaFrutas[2];
echo '<br>';

//Visualizando estrutura do array
print_r($listaFrutas);
echo '<hr>';

//Visualizando estrutura do array com mais informações
var_dump($listaFrutas);

56 - Arrays Associativos

<?php

$usuario = [
  'nome' => 'José Malcher JR',
  'email' => '[email protected]',
  'idade' => 38,
  'altura' => 1.73,
  'brasileiro' => true
];


echo $usuario['nome'] . ' com o e-mail ' . $usuario['email']
  . ' têm a idade de ' . $usuario['idade'];

57 - Array Multi-Dimensional

<?php

$usuarios = [

  [
    'nome' => 'Usuário 1',
    'email' => '[email protected]',
    'endereco' => [
      'cep' => '65000-000'
    ]
  ],

  [
    'nome' => 'Usuário 2',
    'email' => '[email protected]',
    'endereco' => [
      'cep' => '68000-000'
    ]
  ]
];

/**
 * [
 *    0 => array: array-associativo(
 *                     'nome: string',
 *                     'email: string',
 *                     'endereco': array-associativo(cep)),
 *
 *    1 => array: array-associativo(
 *                     'nome: string',
 *                     'email: string',
 *                     'endereco': array-associativo(cep))
 * ]
 */

// echo '<pre>';
//var_dump($usuarios);

echo '<br>';

echo $usuarios[0]['nome'] .  ', Email : ' . $usuarios[0]['email'];
echo '<br>';
echo 'Endereço CEP: ' . $usuarios[0]['endereco']['cep'];
echo '<hr>';

echo '<br>';

echo $usuarios[1]['nome'] .  ', Email : ' . $usuarios[1]['email'];
echo '<br>';
echo 'Endereço CEP: ' . $usuarios[1]['endereco']['cep'];

58 - Funções para Arrays

<?php

$listaFrutas = ['maçã', 'goiaba', 'uva'];

//Contar o tamanho do array...
echo count($listaFrutas);
echo '<br>';
echo sizeof($listaFrutas); // Alias ou apelido para count...

//Verificar se o array tem um elemento...

//O in_array vai retornar true se o item
//buscado existe no array do segundo parâmetro
echo '<br>';
$frutaEstaNoArray = in_array('goiaba', $listaFrutas);

echo $frutaEstaNoArray ? 'Sim está na cesta de frutas'
  : 'Não está na cesta de frutas!';

//Posso adicionar items a um array existente...
print'<hr>';

$carrinho = [
  'Item: Mouse'
];

print_r($carrinho);

array_push($carrinho, 'Item: Teclado');

print '<hr>';
print_r($carrinho);

//Somar itens de um array

$precos = [19.99, 20.99, 2.99, 10, 0.50];
print '<hr>';
echo 'Resultado da soma é: ' . array_sum($precos);

59 - Operadores para Arrays

<?php

//Array da esquerda é adicionado ao da direita
// na soma, tal qual uma junção e se existirem
//chaves identificas, as chaves do array a direita serão
//ignoradas...
$listaFrutasUm = ['maçã'];

$listaFrutasDois = ['laranja', 'banana', 'uva'];

//Somar dois arrays com o operador: +
$listaFrutas = $listaFrutasUm + $listaFrutasDois;

print_r($listaFrutas); // Array ( [0] => maçã [1] => banana [2] => uva )

//Comparando arrays

$listaFrutasUm = ['laranja', 'banana', 'uva'];

$listaFrutasDois = [2 => 'uva', 1 => 'banana', 0 => 'laranja'];

//== Compara os indicies e os valores
var_dump($listaFrutasUm == $listaFrutasDois); //true

/*
=== Compara os indicies, valores e se os indicies
estão na mesma ordem
*/
// var_dump($listaFrutasUm === $listaFrutasDois); //false

60 - Estruturas de Repetição

61 - For

<?php

$listaFrutas = ['uva', 'banana', 'laranja', 'maçã', 'goiaba'];

//Escrita padrão...
for ($i = 0; $i < count($listaFrutas); $i++) {
  echo $listaFrutas[$i] . '<br>';
}
/*
  uva
  banana
  laranja
  maçã
  goiaba
*/
echo '<br>';

//Escrita alternativa...
for ($i = 0; $i < count($listaFrutas); $i++):

  echo $listaFrutas[$i] . '<br>';

endfor;
/*
  uva
  banana
  laranja
  maçã
  goiaba
*/

62 - While

<?php
$listaFrutas = ['uva', 'banana', 'laranja', 'maçã', 'goiaba'];

$i = 0;

//Escrita padrão...
while ($i < count($listaFrutas)) {
  echo $listaFrutas[$i] . '<br>';
  $i++;
}

echo '<hr>';

$i = 0;
//Escrita alternativa...
while ($i < count($listaFrutas)):

  echo $listaFrutas[$i] . '<br>';
  $i++;

endwhile;

63 - Do While

<?php
$listaFrutas = ['uva', 'banana', 'laranja', 'maçã', 'goiaba'];

$i = 0;

do{

  echo $listaFrutas[$i] . '<br>';
  $i++;

} while($i < count($listaFrutas));

64 - Foreach

<?php

//$numeros = range(0, 10);

//echo '<pre>';
//var_dump($numeros);

//foreach($numeros as $numero) {
//  echo $numero . '<br>';
//}
$listaFrutas = ['uva', 'banana', 'laranja', 'maçã', 'goiaba'];

foreach($listaFrutas as $i => $fruta) {
  print $i . ' - ' . $fruta . '<br>';
}

65 - Iterando em Arrays MultiDimensionais

<?php

$usuarios = [

  [
    'nome' => 'Usuário 1',
    'email' => '[email protected]',
    'endereco' => [
      'cep' => '65000-000'
    ]
  ],

  [
    'nome' => 'Usuário 2',
    'email' => '[email protected]',
    'endereco' => [
      'cep' => '68000-000'
    ]
  ]
];

//Lê estes usuários com for.
$mensagem = '';

for($i = 0; $i < count($usuarios); $i++) {
  $mensagem .= $usuarios[$i]['nome'];
  $mensagem .= ', têm o e-mail ' . $usuarios[$i]['email'];
  $mensagem .= '. Possui o CEP.: ' . $usuarios[$i]['endereco']['cep'];
  $mensagem .= '<hr>'; //0, 1
}

echo $mensagem;

echo '<br>';

$mensagem = '';

foreach($usuarios as $usuario) {

  $mensagem .= $usuario['nome'];
  $mensagem .= ', têm o e-mail ' . $usuario['email'];
  $mensagem .= '. Possui o CEP.: ' . $usuario['endereco']['cep'];
  $mensagem .= '<hr>'; //0, 1

}

echo $mensagem;

66 - Conclusões

Voltar ao Índice


67 - Introdução

68 - Entendendo o Módulo

69 - O que são Paradigmas

70 - Iniciando Estrutura

71 - Iniciando Navegação

72 - Recebendo Valores da URL

73 - Verificando Parâmetros da URL

74 - Inclusão de Arquivos Externos

75 - Usando Arquivo de Configuração

76 - Criando Fonte de Produtos

77 - PHP & HTML Juntos

78 - Linkando Detalhes Produto

79 - Criando Detalhe do Produto

80 - Config Link Site & Extensão PHTML

81 - Organizando Código HTML Repetido

82 - Melhorando Busca do Produto

83 - Conclusões

Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice