我没有安装 PHP 5.2 进行测试。
我想用来if (class_exists('Composer\Autoload\ClassLoader'))
测试是否安装了composer,但是我的代码需要与 PHP 5.2 兼容。
PHP 5.2 会卡在反斜杠字符上吗?还是只会返回 false 并继续执行脚本?
我没有安装 PHP 5.2 进行测试。
我想用来if (class_exists('Composer\Autoload\ClassLoader'))
测试是否安装了composer,但是我的代码需要与 PHP 5.2 兼容。
PHP 5.2 会卡在反斜杠字符上吗?还是只会返回 false 并继续执行脚本?
命名空间在 PHP 5.2 中不存在——它们是作为 PHP 5.3 中的新特性添加的。
所以你的问题的直接答案是肯定的,PHP 5.2 会卡在反斜杠上,因为就它而言,它不是有效的语法。
您引用的代码行本身在语法上并不是无效的,因为正如您所指出的,它只是一个字符串。不过,将它传递给class_exists()
可能会或可能不会破坏的东西——我也没有 PHP 5.2 的副本可供确认。如果我猜的话,我希望它会发出某种警告或通知,而不是完全炸毁。
但是作曲家本身不适用于 5.2,因此如果用户使用的是 5.2,那么根据定义,他们不能安装 Composer。因此,我建议您可以通过首先直接检查 PHP 版本,调用phpversion()
and来避免整个问题version_compare()
。这将使您避免对class_exists()
通话产生任何不愉快。