Есть ли волшебный метод для статического доступа к нестатическому свойству?

Я надеюсь, что это не глупый вопрос, но я действительно не могу найти ответ.

У меня есть несколько глобальных классов с одноэлементной функцией.
В основном речь идет о небольших параметрах конфигурации.

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 ()

Это слишком грязно?

1

Решение

Вместо использования статической переменной просто сделайте $ strQuote постоянной переменной. тогда вы можете получить к нему доступ в той же усадьбе, что и статическая переменная. const STR_QUOTE = "'"; тогда вы можете получить к нему доступ в классе как self::STR_QUOTE и внешне с именем класса.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]