PHP: define() против const — в чем разница и что лучше использовать?
مرحباً بالجميع! أكتب بلغة PHP منذ حوالي عام، وهناك سؤال واحد يقلقني دائماً. أرى أنه في المشاريع المختلفة يتم تعريف الثوابت بطرق مختلفة: البعض يستخدم `define()`، والبعض الآخر يستخدم الكلمة المفتاحية `const`.
على سبيل المثال، في الأطر القديمة كثيراً ما أرى هذا الكود:
```php
define('DB_HOST', 'localhost');
define('DB_NAME', 'mydb');
```
أما في المشاريع الحديثة مثل Laravel أو Symfony، فأرى هذا:
```php
class Config {
const API_KEY = 'abc123';
const TIMEOUT = 30;
}
```
أو حتى في النطاق العام مباشرة:
```php
const MAX_USERS = 100;
```
لقد قرأت PSR-1 و PSR-12، ولكن ما كُتب فيه غامض نوعاً ما. يبدو أنه يُنصح باستخدام `const`، لكن دون شرح السبب. لقد جربت كلا الخيارين، وكلاهما يعمل. لكن ما يربكني هو أن `define()` يسمح بتعريف الثوابت داخل كتل `if`، بينما `const` لا يفعل ذلك. كما سمعت أنه في الإصدارات الجديدة من PHP أصبح `const` أسرع. هل هذا صحيح؟
أرجو إفادتي، في أي الحالات تكون كل طريقة أفضل؟ هل هناك أي اعتبارات عملية