簡體   English   中英

是否有一種魔術方法可以靜態訪問非靜態屬性?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM