在PHP 5.2中使用命名空间If Statement

时间:2011-02-02 15:50:58

标签: php namespaces

在将名称空间添加到可能在php 5.2服务器上运行的脚本之前,是否可以使用某种检查?

例如,如果要在5.3服务器上使用doctrine(需要5.3),并在5.2服务器上回退到PDO。

示例:

if($pdo){

  //RETURN a pdo connection

}
else if($doctrine){

   //this will fail even if doctrine is false because namespaces are being used
   $classLoader = new Doctrine\Common\ClassLoader('Doctrine\Common');  
   $classLoader->register();

}

这只是一个例子,我确信我可以在没有命名空间的情况下使用它,但只是想知道是否还有在IF语句中使用它们。

2 个答案:

答案 0 :(得分:5)

您可以将Doctrine代码放入单独的PHP文件中,并require()分支内的else if

答案 1 :(得分:0)

另一种解决方案是:

$classLoaderName = 'Doctrine\\Common\\ClassLoader';
//this will fail even if doctrine is false because namespaces are being used
$classLoader = new $classLoaderName('Doctrine\Common');  
$classLoader->register();

虽未经过测试。