Я надеюсь, что это не глупый вопрос, но я действительно не могу найти ответ.
У меня есть несколько глобальных классов с одноэлементной функцией.
В основном речь идет о небольших параметрах конфигурации.
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 постоянной переменной. тогда вы можете получить к нему доступ в той же усадьбе, что и статическая переменная. const STR_QUOTE = "'";
тогда вы можете получить к нему доступ в классе как self::STR_QUOTE
и внешне с именем класса.
Других решений пока нет …