Avatar ·

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` أسرع. هل هذا صحيح؟ أرجو إفادتي، في أي الحالات تكون كل طريقة أفضل؟ هل هناك أي اعتبارات عملية