Avatar ·

PHP: define() vs const — qual é a diferença e o que é melhor usar?

Olá a todos! Escrevo em PHP há cerca de um ano, e uma pergunta me incomoda constantemente. Vejo que em diferentes projetos as constantes são declaradas de maneiras diferentes: uns usam define(), outros — a palavra-chave const. Por exemplo, em frameworks antigos, frequentemente vejo este código: ```php define('DB_HOST', 'localhost'); define('DB_NAME', 'mydb'); ``` E em projetos modernos com Laravel ou Symfony — isto: ```php class Config { const API_KEY = 'abc123'; const TIMEOUT = 30; } ``` Ou até mesmo no escopo global: ```php const MAX_USERS = 100; ``` Li o PSR-1 e o PSR-12, mas está escrito de forma bastante vaga. Aparentemente, recomenda-se usar const, mas não explica por quê. Tentei ambas as opções — e ambas funcionam. Mas me incomoda que define() permite definir constantes dentro de blocos if, enquanto const não. E também ouvi dizer que nas novas versões do PHP, const se tornou mais rápido. Isso é verdade? Por favor, me digam em quais situações qual método é melhor? Existem algumas práticas...