define() ou const en PHP : quelle est la différence et que vaut-il mieux utiliser pour les constantes ?
Bonjour à tous ! Je suis un développeur PHP débutant, j'écris mon premier projet en PHP pur (sans frameworks). Je suis confronté à une question : comment déclarer correctement les constantes ? Dans les tutoriels et sur Stack Overflow, j'ai vu deux méthodes : via define() et via const. Par exemple :
```php
// Méthode 1
define('SITE_NAME', 'Mon site');
define('MAX_LOGIN_ATTEMPTS', 5);
// Méthode 2
const SITE_NAME = 'Mon site';
const MAX_LOGIN_ATTEMPTS = 5;
```
Les deux fonctionnent, mais je ne comprends pas quelle est la différence fondamentale entre eux. Quand j'ai cherché sur Google, j'ai trouvé des mentions de PSR-1 et PSR-12, mais c'est écrit en termes généraux : "utilisez const". Mais pourquoi ? define() fonctionne aussi.
J'ai aussi remarqué que dans les anciens projets (PHP 5), on utilise partout define(), tandis que dans les projets modernes (PHP 8), on utilise const. Est-ce juste une question de goût ou y a-t-il des raisons techniques ?
Ce qui m'intéresse concrètement :
1. Peut-on utiliser const à l'intérieur des classes et en dehors des classes ?
2. Les deux options fonctionnent-elles avec les tableaux ?
3. Y a-t-il une différence de performance ?
4. Que disent les...