Tutorial Principal de PHP8+
Fundamentos
Introdução à linguagem PHP
Começando
Executando código PHP
Problema com codificações
Saída de erros do PHP
Código completo para executar PHP
Código de inicialização melhorado
Visão geral dos comandos PHP iniciais
Comentários em PHP
Comentários no livro didático
Dump de variáveis
Funções em PHP
Variáveis
Uso de variáveis
Alterando valores de variáveis
Operações matemáticas com números
Operações matemáticas com variáveis
Prioridade das operações matemáticas
Prioridade igual
Parênteses de agrupamento
Nuances de agrupamento
Frações
Números negativos
Resto da divisão
Exponenciação
Prioridade da exponenciação
Strings
Concatenação de strings
Espaços na concatenação de strings
Comprimento da string
Problema com o cirílico
Tags
Atributos de tags
Valores booleanos
Valor null
Conversão automática de tipos
Conversão automática para string
Nuances da conversão para string
Conversão para número
Conversão para fração
Conversão de fração para inteiro
Conversão de número para string
Caracteres da string
Dígitos em uma string
Acessando dígitos de um número
Nuances da operação de atribuição
Operações abreviadas
Incrementação
Tipo prefixo e pós-fixo
Prática na busca por erros
Prática em operações
Prática em fórmulas
Arrays
Introdução aos Arrays
Exibindo o Conteúdo do Array
Elemento Individual do Array
Arrays Associativos
Truque com Chaves
Ordem dos Elementos
Comprimento do Array
Alterando Elementos
Regravando Elementos do Array
Incrementação de Elementos
Preenchendo Arrays
Atribuição Explícita de Chaves
Chaves a Partir de Variáveis
Prática na Identificação de Erros
Condições
Construtores if-else
Operadores maior e menor
Verificação de igualdade
Verificação de desigualdade
Comparação de variáveis
Tipos de dados e construtores if-else
Números entre aspas
Igualdade por valor e tipo
Desigualdade por valor e tipo
Nuances ao comparar tipos de dados
Condições complexas em if-else
E lógico
OU lógico
Prioridade das operações de comparação
Agrupamento de condições
Inversão de declarações
Construtores if-else e valores booleanos
Comparação não estrita de valores lógicos
If abreviado
Nuance de operações abreviadas
Comando isset
Supressão de avisos
Verificação de elementos de array
Comando empty
Opcionalidade do comando else
Opcionalidade das chaves
Problema da opcionalidade de chaves
Combinações if-else
Construtor elseif
Ifs aninhados
Construtor switch
Opcionalidade do default
Construtor match
Opcionalidade do break
Operador ternário
Operador de coalescência nula
Cadeias de operadores de coalescência nula
Operações lógicas
Determinação da parte da hora
Verificação do comprimento de strings e arrays
Verificação de caractere da string
Verificação do resto da divisão
Prática na busca de erros
Prática if else
Laços
Introdução
Laço foreach
Laço foreach com chaves
Laço while
Laço for
Condições em laços
Acúmulo de soma de números
Acúmulo de soma de elementos
Formação de strings em laço
Opcionalidade das chaves
Problema da opcionalidade das chaves
Instrução break
Instrução continue
Trabalhando com flags
Laços aninhados
Laço for para arrays
Preenchendo arrays em laço
Modificando arrays em laço
Dicas para escrever código
Prática na busca de erros
Prática em laços
Multidimensionalidade
Introdução
Array tridimensional
Arrays associativos
Arrays arbitrários
Iteração de arrays multidimensionais
Iteração de array tridimensional
Trabalhando com chaves
Preenchendo arrays multidimensionais
Preenchendo com números em ordem
Array de arrays associativos
Conversão de arrays multidimensionais
Funções Matemáticas
Funções de String
Comprimento da string
Maiúsculas e minúsculas
Cortando strings
Verificação de strings
Pesquisa em strings
Divisão de strings
Limpando extremidades da string
Impressão de string com inserção
Formatação de representação de números
Revertendo a string
Preenchendo a string
Trabalhando com tags
Códigos de caracteres
Contando substrings
Partes de strings
Funções de array
Pesquisa em arrays
Elementos de extremidade
Fatiamento de arrays
Emenda de arrays
Intervalo em array
Preenchimento de arrays
Fusão de arrays
Chaves-valores
Reversão
Substituição
Remoção de duplicatas
Contagem de elementos
Divisão em subarrays
Ordenação
Operações de conjunto
Aleatório
Tempo
Trabalhando com timestamp
Formatação
Analisando datas em formato livre
Verificando a correção
Fuso horário
Modificação
Comparação de strings
Comparação de data sem o ano
Verificação se uma data está dentro de um intervalo
Comparação de timestamp
Funções Definidas pelo Usuário
Introdução
Parâmetros de Função
Vários Parâmetros
Parâmetros Variáveis
Parâmetros Opcionais
A Instrução return
Chamada Sequencial de Funções
Um Detalhe Sutil do return
Loop e return
Aplicação do return em Loops
Técnica de Trabalho com return
Flags em Funções
Operadores Lógicos em Funções
Dicas sobre Funções
Prática na Busca de Erros
Prática em Funções
Escopo
Referências primitivas
Referências de arrays
Referências no foreach
Variáveis internas
Variáveis externas
Variáveis homônimas
Variáveis globais
Alteração de parâmetros
Parâmetros de referência
Recursão
Recursão
Exemplo com parâmetro
Soma dos elementos de um array
Recursão e arrays multidimensionais
Soma de array multidimensional
Manipulações com elementos
Expressões Regulares
Introdução
Operadores de repetição
Parênteses de agrupamento
Escapamento de caracteres especiais
Lista de caracteres especiais
Chaves
Limitação da ganância
Grupos de caracteres
Conjuntos de caracteres
Inversão de conjuntos de caracteres
Particularidades do cirílico
Caracteres especiais dentro de conjuntos
Grupos de caracteres dentro de conjuntos
Caracteres especiais de exclusão dentro de conjuntos
Símbolo de acento circunflexo dentro de conjuntos
Particularidades do hífen dentro de conjuntos
Início e fim da linha
Fim ou início da palavra
Comando 'ou'
Delimitadores
Escapamento de delimitadores
Barra invertida
Verificação de string
Teste automático de expressões regulares
Verificação de toda a string
Capturas na busca
Busca de todas as correspondências
Todas as correspondências para capturas
Alteração do comportamento da busca
Parênteses não capturadores
Capturas na substituição
Capturas na expressão
Capturas nomeadas
Capturas nomeadas dentro da expressão
Número comum de capturas
Lookahead
Lookbehind
Substituição com callback
Modificadores
Ignorar maiúsculas e minúsculas em regex
Comentários em expressões regulares
Trabalhando com Unicode em regex
Alteração da ganância em regex
Escapamento de caracteres comuns em regex
Múltiplos modificadores de regex
Escapamento automático de caracteres especiais
Filtragem de array
Divisão de string em array
Formação de Strings
Inserção de Variáveis
Inserção de Elementos de Array
Inserção de Elementos de Arrays Associativos
Loop e Inserção de Variáveis
Inserção de Elementos de Arrays em Loop
Inserção de Elementos de Arrays Multidimensionais em Loop
Geração de Tags
Geração de Tags com Atributos
Loop e Geração de Tags
Loop e Geração de Tags a partir de Arrays
Loop e Geração de Tags e Atributos
Loop e Geração de Tabelas HTML
Geração de Tabela HTML com um Único Loop
Geração de Tabela HTML com Dois Loops Aninhados
Inserção de Código PHP em HTML
Comando echo Curto
Saída de Variável em HTML
Saída de Elementos de Array em HTML
Condicionais e Interrupção de Código PHP
Bloco else na Interrupção de Código PHP
Bloco elseif na Interrupção de Código PHP
Loops e Interrupção de Código PHP
Array em Loop na Interrupção de Código PHP
Formulários
Introdução aos formulários
Método de envio do formulário
Obtenção de dados de formulários
Obtenção de dados de formulários pelo método GET
Obtenção de dados de formulários pelo método POST
Processamento de formulário em um único arquivo
Ocultando o formulário após o envio
Preservação dos valores do formulário
Preservação do valor padrão do formulário
Código abreviado para preservação de valores padrão
Elemento textarea
Preservação do valor do textarea após o envio
Checkbox
Nuances do uso de checkboxes
Preservação do valor no checkbox
Botões de rádio
Preservação do valor nos botões de rádio
Selects
Atributo value nos selects
Preservação do valor nos selects
Requisições GET
Requisições GET usando links
Prática
Sessões
Introdução às sessões
Problemas possíveis
Usando sessões em uma única página
Removendo sessões
Destruindo toda a sessão
Sessões e formulários
Gravando arrays em sessões
Cookies
Introdução aos cookies
Problema de configuração de cookies
Configuração instantânea de cookies
Contador de recarregamento de página
Tempo de vida do cookie
Remoção de cookies
Remoção instantânea de cookies
Sistema de Arquivos
Leitura de arquivos
Escrita de arquivos
Combinação de operações
Caminhos relativos
Caminhos absolutos
Vantagens do caminho absoluto
Caminhos absolutos para o script
Renomeação de arquivos
Movimentação de arquivos
Cópia de arquivos
Remoção de arquivos
Determinação do tamanho dos arquivos
Verificação da existência de arquivos
Criação de pastas
Remoção de pastas
Renomeação de pastas
Movimentação de pastas
Leitura do conteúdo de uma pasta
Distinguindo pasta de arquivo
Analisando o conteúdo de uma pasta
Inclusão de arquivos
Divisão de marcação em elementos
Gravação da inclusão em uma variável
Requerimento de arquivos
Requerimento único de arquivos
Gravação do requerimento em uma variável
Bancos de Dados
Introdução a Bancos de Dados
PhpMyAdmin
Tabela de teste 'users'
Manipulações Preparatórias
Enviando Consultas ao Banco de Dados
Encontrando Erros no Banco de Dados
Testando a Funcionalidade
Problemas de Codificação
Código de Teste Completo
Obtendo o Resultado
Obtendo o Resultado como um Array
Formando um Array em Loop
Seleção de Registros
Operações Lógicas
Campos de Seleção
Inserção de Registros
Inserção de Registros com Colunas Ausentes
Atualização de Registros
Exclusão de Registros
Ordenação de Registros
Limitação de Quantidade
Contagem de Quantidade
Obtendo a Contagem
Consultas Avançadas
Organização do Banco de Dados
Vinculação de Tabelas
Obtendo Dados de Tabelas Vinculadas
Cadeia de Tabelas Vinculadas
Vinculação através de Tabela de Ligação
Relações Familiares
Vários Descendentes
Relação Dupla
Prática
Prática com BD
Tabela de teste users
Formatação da saída
Remoção de dados
Visualização de dados
Adição de dados
Edição de dados
Trabalhando com HTTP
Guia HTTP
Método de Requisição HTTP
Cabeçalhos de Requisição HTTP
Array de Cabeçalhos de Requisição HTTP
Cabeçalhos de Resposta HTTP
Problema com Cabeçalhos de Resposta HTTP
Problema com include
Enviando a Linha de Início da Resposta HTTP
Enviando o Status da Resposta HTTP
Redirecionamentos
Introdução aos redirecionamentos
Redirecionamento instantâneo
Consultas GET e redirecionamento
Autoredirecionamento com adição de parâmetros
Mensagens flash
Array de mensagens flash
Salvamento de formulários
Mensagens de sucesso no envio
Redirecionamento na validação de formulário
Autenticação
Introdução
Autorização
Sessões
Logout da sessão
Registro
Autorização imediata no registro
Adicionando id na sessão
Ocultação da senha
Verificação de login ocupado
Validação
Hash
Adicionando salt no registro
Adicionando salt na autenticação
Função password_hash
Perfil
Conta
Alteração de senha
Confirmação de senha
Remoção de conta
Direitos
Registro com divisão de direitos
Direitos e normalização do banco de dados
Motor do Site
Introdução
Usando htaccess
Motor baseado em arquivos
Título no motor baseado em arquivos
Títulos em array
Títulos no conteúdo
Página 404 no motor baseado em arquivos
Motor baseado em banco de dados
URLs amigáveis no motor
Roteamento simples
Roteamento com parâmetros nomeados
Vários parâmetros na rota
Prática