我有一个mediawiki和phpbb安装,我成功地集成了单点登录。可能动态设置一个类的名字?
问题是,他们都有一个用户类,所以在mediawiki中,当我打电话给phpbb时,它给了一个课程重新装修错误。
我通过检查文件是否被mediawiki加载来解决这个问题。如果是,它会调用phpbb_user用户类的完整副本。但我想知道是否有更好的方法。这是它如何工作
if (!defined('FROM_MEDIAWIKI')){
class User extends session{
//user class code
}
}else{
class phpbb_user extends session{
//exact copy of user class code
}
}
有没有更好的方式来做到这一点,不需要2份用户类?
我知道你不能这样做,但你可以做类似的事吗?
$className = (defined('FROM_MEDIAWIKI'))? 'phpbb_user' : 'User';
class $className extends session{
//user class code
}
如果你只是将代码放在从'session'派生的类中,或者在'session'本身中,如果它适合那里并从那个派生出来呢?这可能会更慢,但避免重复。 – Archimedix 2011-05-01 15:31:36
实际的SSO代码只是调用一个创建用户类实例的文件。我需要那个类实例。但我只需要将实际的类称为不同的名称,以免重新定义错误。 – 2011-05-01 17:03:58