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