我希望这不是一个愚蠢的问题,但我真的找不到答案。
我有一些带有单例函数的全局类。 主要是关于小配置参数。
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()
处理它这太脏了吗?
答案 0 :(得分:0)
不要使用静态变量,只需使$ strQuote为常量var即可。然后你可以在与静态变量相同的庄园中访问它。 const STR_QUOTE = "'";
然后您可以在课程中以self::STR_QUOTE
的形式访问它,并在外部使用类名。