簡體   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