Интересно, можно ли сделать что-то вроде следующего (я знаю, что код не будет работать так, как задумано, просто пытаюсь донести цель):
class Form
{
private $v = array();
function __set($varName, $varValue)
{
... do some treatment on the varValue ...
$this->v[$varName] = $varValue;
}
function &__get($varName)
{
if(!isset($this->v[$varName]))
$this->v[$varName] = NULL;
return $this->v[$varName];
}
};
Я хочу иметь возможность установить переменную например:
$ form-> Values ['any'] = 'dirty';
и пусть он будет запущен через функцию установки, которая вызовет некоторые операции очистки и фактически заполнит пару других массивов, таких как 'HtmlValues' и 'SqlValues', чтобы я мог просто вытащить значения, закодированные для нужного мне формата, чтобы позже я мог вызвать
echo $ form-> HtmlValues ['any'];
Проблема, конечно же, обычная проблема: если вы просто используете _ get, вы получите значение, которое возвращается, и даже если & _get возвращает его по ссылке и что-то вроде работы, тип данных 'a susp = Susp of (unit ->' a) // Функция для хранения вычислений Я думаю ...
Я пытаюсь выяснить, как новая system_error
вместе с error_code
, error_category
и не в последнюю очередь (предназначенная для реализации портативный отчет об ошибках) error_condition
.
Я думаю, прочитав boost.system , я понимаю, как мне следует использовать error_codes
и категория_ошибки
. В описании не упоминается, как это используется в сочетании с генерацией исключения с «system_error», но я могу догадаться по интерфейсу этого класса.
class system_error : public runtime_error {
public:
// [...]
system_error(error_code ec, const string& what_arg);
system_error(int ev, const error_category& ecat, const string& what_arg);
system_error(int ev, const error_category& ecat);
// [...]
Итак, я выбрасываю исключение system_error
с правой int
+ категория_ошибки
или код_ошибки
с его методом error_category ()
-метод. правильно?
Есть хороший пример, где я могу взглянуть на код, как error_condition
должен быть расширен пользователем в сочетании с system_error
-exceptions ?