Avatar ·

PHP: define() vs 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更快。这是真的吗? 请告诉我,在什么情况下哪种方式更好?有没有一些实用的建议?