<?php /** * Classe responsável pelo gerenciamento de cache do sistema * * Esta classe implementa funcionalidades para armazenar e recuperar * conteúdo em cache, utilizando o sistema de arquivos como storage. * O cache é organizado por URLs convertidas em IDs únicos usando SHA-256. */ class Cache { /** * @var string Diretório onde os arquivos de cache serão armazenados */ private $cacheDir; /** * Construtor da classe * * Inicializa o diretório de cache e cria-o se não existir */ public function __construct() { $this->cacheDir = CACHE_DIR; if (!file_exists($this->cacheDir)) { mkdir($this->cacheDir, 0777, true); } } /** * Gera um ID único para uma URL * * @param string $url URL para qual será gerado o ID * @return string Hash SHA-256 da URL normalizada */ public function generateId($url) { // Remove protocolo e www $url = preg_replace('#^https?://(www\.)?#', '', $url); // Gera ID único usando SHA-256 return hash('sha256', $url); } /** * Verifica se existe cache para uma determinada URL * * @param string $url URL a ser verificada * @return bool True se existir cache, False caso contrário */ public function exists($url) { $id = $this->generateId($url); $cachePath = $this->cacheDir . '/' . $id . '.html'; return file_exists($cachePath); } /** * Recupera o conteúdo em cache de uma URL * * @param string $url URL do conteúdo a ser recuperado * @return string|null Conteúdo em cache ou null se não existir */ public function get($url) { if (!$this->exists($url)) { return null; } $id = $this->generateId($url); $cachePath = $this->cacheDir . '/' . $id . '.html'; return file_get_contents($cachePath); } /** * Armazena conteúdo em cache para uma URL * * @param string $url URL associada ao conteúdo * @param string $content Conteúdo a ser armazenado em cache */ public function set($url, $content) { $id = $this->generateId($url); $cachePath = $this->cacheDir . '/' . $id . '.html'; file_put_contents($cachePath, $content); } }