Avatar ·

define() 或 const 在 PHP 中:区别是什么以及常量应该用哪个?

大家好!我是一名初学 PHP 开发者,正在用纯 PHP(无框架)写第一个项目。遇到了一个问题:如何正确声明常量?在教程和 Stack Overflow 上我看到两种方式:通过 define() 和通过 const。例如: ```php // 方式 1 define('SITE_NAME', '我的网站'); define('MAX_LOGIN_ATTEMPTS', 5); // 方式 2 const SITE_NAME = '我的网站'; const MAX_LOGIN_ATTEMPTS = 5; ``` 两者都有效,但我不明白它们之间的根本区别。当我搜索时,找到了关于 PSR-1 和 PSR-12 的提及,但那里只是泛泛而谈:“使用 const”。但为什么呢?define() 也有效啊。 我还注意到,在旧项目(PHP 5)中到处都用 define(),而在现代项目(PHP 8)中则用 const。这只是个人喜好还是有技术原因? 我具体想知道: 1. const 可以在类内部和类外部使用吗? 2. 两种方式都支持数组吗? 3. 性能上有区别吗? 4. 标准怎么说?