繁体   English   中英

可以动态设置 class 的名称吗?

[英]Possible to dynamically set the name of a class?

我有一个 mediawiki 和 phpbb 安装,我成功地集成了单点登录。

问题是他们都有一个用户 class,所以在 mediawiki 中,当我调用 phpbb 时,它给出了 class 重新装修错误。

我通过检查 mediawiki 是否正在加载文件来解决这个问题。 如果是,则调用名为 phpbb_user 的用户 class 的完整副本。 但我想知道是否有更好的方法。 这就是它目前的工作方式

if (!defined('FROM_MEDIAWIKI')){
    class User extends session{
    //user class code
    }

}else{
    class phpbb_user extends session{
    //exact copy of user class code
    }

}

有没有更好的方法来做到这一点,不需要用户 class 的 2 个副本?

我知道你不能这样做,但你能做类似的事情吗?

$className = (defined('FROM_MEDIAWIKI'))? 'phpbb_user' : 'User';

class $className extends session{
    //user class code
}

这有点小技巧,但你可以有一个基础 class,如果定义了所有内容。 然后,您只需从该 class 扩展空子类,从而更改其名称而无需保留重复代码。

class __user extends session {
    // user class code
}

if (!defined('FROM_MEDIAWIKI')){
    class User extends __user {}
}else{
    class phpbb_user extends __user {}
}

不过,我希望看到更好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM