[英]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.