在PHP 5.2上使用带有名称空间的class_exists

时间:2012-11-15 11:36:19

标签: php composer-php

我没有安装PHP 5.2来测试。

我想使用if (class_exists('Composer\Autoload\ClassLoader'))来测试是否安装了composer,但我的代码需要与PHP 5.2兼容。

PHP 5.2会卡在反斜杠字符上吗?或者只是返回false并继续使用脚本?

1 个答案:

答案 0 :(得分:2)

PHP 5.2中不存在命名空间 - 它们是作为PHP 5.3中的新功能添加的。

因此,对你的问题的直接回答是肯定的,PHP 5.2将被卡在反斜杠上,因为就它而言,它是无效的语法。

您引用的代码行本身在语法上无效,因为正如您指出的那样,它只是一个字符串。将其传递到class_exists()可能会或可能不会破坏 - 我也没有PHP 5.2的副本,以便确认。如果我猜测,我会期望它会发出某种警告或注意而不是完全爆炸。

但是作曲家本身不适用于5.2,所以如果用户在5.2上,那么根据定义他们不能安装Composer。因此,我建议您首先通过调用phpversion()version_compare()直接检查PHP版本来避免整个问题。这样您就可以避免class_exists()电话的任何不愉快。