Pai Da Tabela Periódica - Dmitri Mendeleev: O Pai da Tabela Periódica by Paulo Alves on Prezi
Dmitri Mendeleev: O Pai da Tabela Periódica by Paulo Alves on Prezi

Construindo uma tabela periódica com PHP — o que funciona e o que dá problema

Montar uma página que exibe a tabela periódica dos elementos usando PHP é mais chato do que parece no início. A primeira coisa que você encontra é a necessidade de estruturar os dados dos elementos de forma que o layout em grade funcione corretamente, especialmente porque o hidrogênio precisa ficar sozinho no topo e os gases nobres na coluna da direita. Eu já perdi algumas horas tentando fazer o alinhamento funcionar sem depender de bibliotecas externas.

O básico do pai da tabela periódica em PHP

Você precisa de um array associativo com pelo menos número atômico, símbolo, nome e massa atômica. O truque principal é usar array_chunk() para dividir os 118 elementos em linhas, mas o problema é que a linha 6 tem o lantanídeo e a linha 7 tem o actinídeo, que tradicionalmente ficam separados abaixo do resto. Sem isso, a tabela fica visualmente errada e qualquer estudante vai perceber na hora. O código base que eu uso costuma ser algo como isso:

$elementos = [
    ['Z' => 1, 'sim' => 'H', 'nome' => 'Hidrogênio', 'massa' => 1.008, 'grupo' => 1],
    ['Z' => 2, 'sim' => 'He', 'nome' => 'Hélio', 'massa' => 4.0026, 'grupo' => 18],
    // ... 116 elementos depois
];

$linhas = array_chunk($elementos, 18);
foreach ($linhas as $linha) {
    echo '';
    foreach ($linha as $el) {
        echo '' . $el['sim'] . '';
    }
    echo '';
}

Isso funciona para a estrutura básica, mas tem um problema que a maioria dos tutoriais não menciona: a cor de fundo por categoria. Metais alcalinos, halogênios, gases nobres — cada grupo precisa de uma cor distinta. O CSS entra aqui, e é onde a coisa fica realmente chata porque 7 categorias diferentes pedem 7 cores que não se sobrepõem visualmente.

👉 Clique no botão abaixo para saber mais sobre o assunto!

O problema que ninguém conta

Quando eu fiz meu primeiro projeto desses, tentei hardcodar as cores num array separado. Resultado: o césio e o francio ficam na mesma coluna que o lítio, mas a massa atômica do francio é radioativa e instável, então o valor exato varia conforme a fonte. Eu perdi duas tardes ajustando porque algumas tabelas usam 223 e outras usam 223.0 na terceira casa decimal. A solução foi criar uma função getMassa($simbolo) que consulta uma API ao invés de confiar num array estático. Outro detalhe prático: a responsividade. Em telas pequenas, a tabela de 18 colunas quebra completamente. A solução que eu recomendo é usar overflow-x: auto no container e deixar o usuário rolar horizontalmente. Não adianta tentar empurrar os elementos para baixo — fica ilegível em qualquer dispositivo.

Onde isso falha completamente

Se você tentar fazer uma versão interativa com tooltips que mostram a configuração eletrônica, esqueça. Cada elemento tem uma notação diferente, e calcular isso do zero leva tempo suficiente para justificar o uso de uma biblioteca pronta. Eu testei gerar a configuração com base no número atômico usando a regra de Aufbau, mas o crômio e o cobre são exceções que quebram a lógica simples. O cromo é [Ar] 3d5 4s1 ao invés de [Ar] 3d4 4s2, e isso te pega desprevenido na primeira vez. O download de uma implementação pronta é mais rápido se você não tiver necessidades específicas. O repositório periodic-table/php no GitHub tem uma versão funcional que usa dados estáticos e CSS grid, mas ela não inclui os elementos transurânicos além do oganesônio. Se você precisa de precisão científica completa, vai precisar construir do zero mesmo.

A manutenção também é um problema. Atualizações de nomenclatura da IUPAC acontecem raramente, mas quando acontecem — como foi o caso do ununoctio virar oganesônio em 2016 — todo mundo que copiou um tutorial antigo precisa corrigir manualmente. O hidrogênio às vezes aparece em lugar errado em tabelas desatualizadas, colocandolo no grupo 1 quando na verdade ele não pertence a nenhuma família específica.