PHP类重新定义澄清

PHP类重新定义澄清,php,class,oauth,Php,Class,Oauth,我有一个为PHP编写的LinkedIn API类,它使用了第三方独立的OAuth类,而不是可能安装的PECL PHP OAuth扩展。我这样设计它是为了允许许多用户没有能力/权限安装PECL扩展来进行所需的OAuth调用 因此,对于未安装PECL扩展的PHP安装,所有这些都可以完美地工作。问题出在安装了PECL扩展的服务器上。。。实例化第三方OAuth类会导致重新定义错误,因为PECL扩展和第三方类都将它们的类称为“OAuth” 让我的类具有足够的灵活性以支持这两种情况将是非常好的,但当然,这两

我有一个为PHP编写的LinkedIn API类,它使用了第三方独立的OAuth类,而不是可能安装的PECL PHP OAuth扩展。我这样设计它是为了允许许多用户没有能力/权限安装PECL扩展来进行所需的OAuth调用

因此,对于未安装PECL扩展的PHP安装,所有这些都可以完美地工作。问题出在安装了PECL扩展的服务器上。。。实例化第三方OAuth类会导致重新定义错误,因为PECL扩展和第三方类都将它们的类称为“OAuth”

让我的类具有足够的灵活性以支持这两种情况将是非常好的,但当然,这两个冲突的类具有不同的方法名,等等


我知道一个简单的答案是告诉人们,我的库只适用于服务器上没有安装PECL扩展的情况,但我想知道是否还有其他解决方案。

从声音上看,PECL类和您的类并不真正兼容,因此,显而易见的解决方案是重命名您的文件或将其移动到单独的文件中(仅限PHP>=5.3!)

如果它们应该是兼容的,那么您也可以仅在未定义PECL类的情况下包含OAuth include:

if (!class_exists("OAuth"))
 require "/path/to/your/oauth.php";

不知道这是否有效,但也许

require_once("/path/to/your/oauth.php");

对,我已经使我的类与第三方类兼容,而不是PECL扩展。将查看名称空间,但>=5.3意味着此时可能不是一个选项。谢谢