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...