On Mon, Dec 15, 2008 at 06:24:29PM +0300, Konstantin V. Arkhipov wrote:
> > вопросы, комментарии?
> глянь trunk. там уже нет getDefault/getActual и после неудачного импорта
> значение устанавливается в последнее валидное.
ок, пусть останется поведение только второго типа - транзакция.
при желании пользователь вручную может сбросить ошибочные примитивы, реализовав
поведение первого типа.
тогда в транке есть ошибка:
private function checkImportResult(BasePrimitive $prm, $value, $result)
{
$name = $prm->getName();
if (true === $result)
$prm->dropError();
else {
if (null === $result) {
if ($prm->isRequired())
$prm->setError(BasePrimitive::MISSING);
} else {
$prm->setError(BasePrimitive::WRONG);
}
if (null <> $value)
$prm->setValue($value);
}
return $this;
}
запарывающий тесткейс:
1. optional примитив после импорта будет неопределен:
$form = Form::create()->add($primitive->optional())
$form->import(bad value)
$form->getValue() - undefined (поскольку import в конкретном примитиве может
поменять value, и значение не станет таким, каким было до иморта, то есть null).
также хочется, чтобы следущие кейсы проходили:
1. import и importMore - алиасы (+ isImported() уедет в dev/null за отсутствием
необходимости, все более понятно работать будет, и поменяется порядок
get/post/cookie с точностью до наоборот - сначала надо будет указывать наименее
приоритетные значение, а потом - более приоритетные, которые могут перезаписать
старые значение)
2. required без инициализации - это missing.
$form = Form::create()->add(Primitive::integer()->required())
$form->getErrors() - true
а также не понятна разница между null и false в Primitive.import:
protected function import($scope)
{
if (
!empty($scope[$this->name])
|| (
isset($scope[$this->name])
&& $scope[$this->name] !== ''
)
) {
$this->raw = $scope[$this->name];
return $this->imported = true;
}
$this->clean();
return null;
}
коль мы можем import для примитива вызывать сколь угодно много раз - разницы
между missing и wrong не будет никакой до окончания всех импортов, см. кейс 2.
и еще вызов clean() тут под большим вопросом.
-- `< ~/.signature cat`Received on Mon Dec 15 2008 - 19:06:40 MSK
This archive was generated by hypermail 2.2.0 : Tue Dec 16 2008 - 00:05:04 MSK