[英]Is there a magic method to access a non-static property statically?
我希望這不是一個愚蠢的問題,但我確實找不到答案。
我有一些具有單例功能的全局類。 通常,它與小型配置參數有關。
class myConfig{
protected $strQuote = '"';
protected $path_delimiter = '\\';
public function __get($name){
return $this->$name; // after checking if it exist etc.
}
public static function getMe(){
// do the singleton magic
return $oInstance;
}
}
這工作正常:
$quote = myConfig::getMe()->strQuote;
這也是:
$oConf = myConfig::getMe();
$quote = $oConf->strQuote;
$delim = $oConf->path_delimiter;
但是大多數情況下只需要一個小參數,我想解決一下:
$quote = myConfig::$strQuote;
一切都是神奇的方法,但我找不到任何解決方法。 我嘗試了靜態__get()和__callstatic()。 但是無法使其正常工作。
不能將屬性聲明為靜態。 該類將主要用作實例。
更新解決方法
我只是想到了一種骯臟的解決方法。 我不確定它是否太臟。
$quote = myConfig::strQuote();
要么
$quote = myConfig::get_strQuote();
然后使用__callStatic()處理它
這太臟了嗎?
不必使用靜態變量,只需使$ strQuote為常量var。 那么您可以在與靜態變量相同的方式下訪問它。 const STR_QUOTE = "'";
那么您就可以在類中以self::STR_QUOTE
訪問它,並在外部使用類名進行訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.