我有一个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
}
答案 0 :(得分:1)
这有点像黑客攻击,但你可以拥有一个基类,如果定义了所有内容。然后,您只需从该类扩展空子类,从而更改其名称,而无需保留重复的代码。
class __user extends session {
// user class code
}
if (!defined('FROM_MEDIAWIKI')){
class User extends __user {}
}else{
class phpbb_user extends __user {}
}
我很乐意看到更好的解决方案。