define() o const en PHP: ¿cuál es la diferencia y qué es mejor usar para constantes?
¡Hola a todos! Soy un desarrollador PHP principiante, escribiendo mi primer proyecto en PHP puro (sin frameworks). Me encontré con la pregunta: ¿cómo declarar correctamente las constantes? En tutoriales y en Stack Overflow vi dos formas: mediante define() y mediante const. Por ejemplo:
```php
// Forma 1
define('SITE_NAME', 'Mi sitio');
define('MAX_LOGIN_ATTEMPTS', 5);
// Forma 2
const SITE_NAME = 'Mi sitio';
const MAX_LOGIN_ATTEMPTS = 5;
```
Ambos funcionan, pero no entiendo cuál es la diferencia fundamental entre ellos. Cuando busqué en Google, encontré menciones sobre PSR-1 y PSR-12, pero allí dice en términos generales: "use const". ¿Pero por qué? define() también funciona.
También noté que en proyectos antiguos (PHP 5) se usa define() en todas partes, mientras que en los modernos (PHP 8) se usa const. ¿Es solo cuestión de gusto o hay razones técnicas?
Específicamente me interesa:
1. ¿Se puede usar const dentro de clases y fuera de clases?
2. ¿Ambas opciones funcionan con arrays?
3. ¿Hay diferencia en rendimiento?
4. ¿Qué dicen las recomendaciones?