У меня есть одноэлементный класс, используемый для инициализации обработки ошибок.
Класс as is принимает объект Zend_Config и необязательный параметр $ appMode в параметре, чтобы разрешить переопределение определенной константы APPMODE при тестировании этого класса. Все в порядке, если я создаю объект с нестатическими свойствами, но инициализация статического свойства не работает так, как я ожидал при вызове обычного getInstance ().
class ErrorHandling{
private static $instance;
private static $_appMode; // not initialised in returned instance
private $_errorConfig;
private function __construct(Zend_Config $config, $appMode = null){
$this->_errorConfig = $config;
if(isset($appMode)){
static::$_appMode = $appMode;
}else{
static::$_appMode = APPMODE;
}
}
private final function __clone(){}
public static function getInstance(Zend_config $config, $appMode = null){
if(! (static::$instance instanceof self)){
static::$instance = new static($config, $appMode);
}
return static::$instance;
}
}
Не то чтобы мне действительно нужно, чтобы $ _appMode вообще был статическим, я объявил его закрытым и перешел, но мне все еще интересно, можно ли инициализировать статические свойства из вызова статической функции. Если бы мне ДЕЙСТВИТЕЛЬНО требовался статический $ _appMode, я мог бы, вероятно, создать объект и впоследствии установить значение с помощью метода setter, но это «не кажется» лучшим способом сделать это.