对于较旧的 PHP 版本,您如何建议不包含带有命名空间的代码


How do you recommend not including code with name spaces for older PHP versions

我正在分发一个PHP库。 我正在使用一个需要命名空间的可选组件。 如果库的用户没有 PHP>= 5.3.0 的版本,我想不包括该功能:

类似于以下内容(并且不起作用):

 public static function validVisualCaptcha( $formId = NULL, $type = NULL, $fieldName = NULL, $accessibilityFieldName = NULL ) {
            $php_version = phpversion();
            if ($php_version >= '5.3.0') {
               require_once('visualCaptcha/inc/visualcaptcha.class.php'); 
               $visualCaptcha = new 'visualCaptcha'Captcha( $formId, $type, $fieldName, $accessibilityFieldName );
              //^^^^^  That Line causes a fatal error if PHP is earlier than 5.3.0
               return $visualCaptcha->isValid();
            }
            else 
                return true;
        }

我是否应该将该实例化放在其自己的文件中并有条件地包含该文件? 这似乎不那么优雅。 C++我会使用预处理器...我在PHP中找不到这样的东西。

绕过

它(并且它仍然是有效的 PHP 5.3 代码)的唯一方法是将代码移动到有条件加载的include(),或者将条件代码放在eval()调用中。

后者是"邪恶的",但在这里可以正常工作:

if ($php_version >= '5.3.0') {
    require_once('visualCaptcha/inc/visualcaptcha.class.php'); 
    $visualCaptcha = eval('return new ''visualCaptcha''Captcha( '$formId, '$type, '$fieldName, '$accessibilityFieldName );');
    return $visualCaptcha->isValid();
}