Por que informar a última atualização é crucial?
Quase sempre, é extremamente importante saber quando foi a última vez que uma página web foi modificada. Imagine que você gerencia um site de promoções, um portal de notícias ou um blog de tecnologia. É essencial exibir a data e o horário das postagens para que os usuários saibam se as informações estão "fresquinhas" ou se aquela promoção imperdível já expirou.
Além da confiança do usuário, os motores de busca (como o Google) amam conteúdo atualizado. Mostrar de forma clara quando um arquivo foi alterado ajuda os robôs de busca a indexarem seu site com mais eficiência.
Obtendo a Data de Modificação: A função getlastmod()
A função getlastmod() (Get Last Modification) é uma função nativa do PHP que verifica os metadados do arquivo atual no servidor e retorna a data exata em que o script (o arquivo
.php) foi salvo/modificado pela última vez. O retorno é dado no formato de Unix Timestamp.
Sua invocação não requer nenhum parâmetro, pois ela olha automaticamente para o arquivo onde foi digitada. Vamos testar:
<?php
echo getlastmod();
?>
Resultado esperado: 1551106973
Ou seja, ela vai te retornar um Timestamp. Mas convenhamos, você não vai exibir isso para o seu visitante, certo? Dizer "Última atualização: 1551106973 segundos desde a Era Unix" espantaria qualquer cliente!
Formatando a Saída (Lidando com o Padrão Antigo e o Moderno)
Como vimos nas aulas passadas, precisamos de um tradutor para transformar esse Timestamp em algo humano.
O Padrão Clássico (Sistemas Legados)
Em sistemas mais antigos (PHP 7 ou inferior), a prática comum era usar a função strftime() combinada com a setlocale() para exibir a data em português. O código ficava assim:
<?php
// CÓDIGO LEGADO (Não recomendado para projetos novos)
setlocale(LC_ALL, 'pt_BR.utf8');
echo "Última atualização: " . strftime('%d/%B/%G às %H:%M:%S', getlastmod());
?>
Resultado: Última atualização: 25/fevereiro/2019 às 12:08:28
O Padrão Moderno (Obrigatório no PHP 8+)
Como a função strftime() foi descontinuada para evitar bugs em servidores globais, a forma correta e recomendada pelo mercado atual é utilizar a poderosa função date() (se quiser exibir em formato numérico simples) ou a classe IntlDateFormatter (para texto em português).
Veja como é simples e moderno resolver o problema hoje em dia:
<?php
// 1. O jeito mais fácil (Formato numérico universal)
$ultima_att = getlastmod();
echo "Atualizado em: " . date("d/m/Y H:i:s", $ultima_att);
echo "<br>";
// 2. O jeito profissional em Português (Classe Intl)
$formatador = new IntlDateFormatter('pt_BR', IntlDateFormatter::LONG, IntlDateFormatter::SHORT);
echo "Revisado em: " . $formatador->format($ultima_att);
?>
Bem mais elegante e seguro, não é?
🚨 A Armadilha do Banco de Dados (Cuidado!)
Muitos iniciantes colocam a função getlastmod() na página index.php de um e-commerce e esperam que a data mude quando eles adicionam um novo produto no Banco de Dados (MySQL). Isso NÃO vai acontecer!
A função getlastmod() lê única e exclusivamente a data em que o arquivo de texto .php foi editado no seu editor de código (VS Code, Sublime) e salvo no servidor. Ela não sabe se os dados vindos do banco mudaram. Para rastrear atualizações de banco de dados, você deve ter uma coluna updated_at na sua tabela MySQL.
Técnica Avançada de SEO: Cabeçalhos HTTP (HTTP Headers)
Se você quer que seu site voe nos rankings do Google e economize banda do servidor, você pode ir além de apenas imprimir o texto no HTML do rodapé.
Você pode usar a getlastmod() combinada com a função header() para avisar invisivelmente ao navegador do usuário e aos robôs do Google que a página não mudou desde a última visita deles, permitindo que eles carreguem a página do cache instantaneamente.
<?php
// Pega a data de modificação
$timestamp_modificacao = getlastmod();
// Formata exatamente no padrão exigido pelo protocolo HTTP (RFC 2822)
$data_http = gmdate('D, d M Y H:i:s', $timestamp_modificacao) . ' GMT';
// Envia o cabeçalho invisível antes de qualquer HTML
header("Last-Modified: " . $data_http);
?>
<!DOCTYPE html>
<html>
<!-- O resto do seu site aqui -->
Consolide seu Conhecimento (O que estudar a seguir)
Para dominar o controle de dados no PHP, continue navegando pelos conceitos essenciais:
- Reforço de Formatação: Ficou na dúvida sobre a função date()? Releia a Aula Completa sobre a função date().
- Entenda os Cabeçalhos: Quer aprofundar na mágica do SEO e Cache? Estude Como manipular a Função header() no PHP.
- Documentação Oficial: Sempre consulte os detalhes minuciosos e retornos no Manual do PHP sobre a getlastmod.
Perguntas Frequentes (FAQ) da Comunidade
A função getlastmod() funciona para arquivos incluídos via require/include?
getlastmod() retorna sempre a data do script principal que está sendo executado no navegador (o "pai"). Se você a chamar dentro de um arquivo menu.php que foi incluído no index.php, ela retornará a data de modificação do index.php. Para saber a data de modificação de um arquivo específico incluído, utilize a função nativa filemtime("menu.php").
O que acontece se eu mudar o arquivo de servidor via FTP? A data muda?
getlastmod() passará a ser o instante exato do upload. Por isso, gerenciar atualizações atreladas a banco de dados costuma ser mais confiável em grandes portais.
Nenhum comentário:
Postar um comentário