/** * @param array(string => string) $attributes * @return $this */ public function addAttributes(array $attributes) { foreach ($attributes as $name => $value) { /** @var string $name */ /** @var mixed $value */ df_assert_string($name); // убрал strval($value) для ускорения системы if (is_object($value) || is_array($value)) { df_log($attributes); df_error('Значение поля «%s» должно быть строкой, однако является %s.', $name, is_object($value) ? sprintf('объектом класса %s', get_class($value)) : 'массивом'); } $this->addAttribute($name, $value); } return $this; }
/** * @param string $v * @param int $stackLevel [optional] * @return void * @throws DFE */ function df_assert_string_not_empty($v, $stackLevel = 0) { df_assert_string($v, $stackLevel + 1); if (df_enable_assertions()) { Q::assertValueIsString($v, $stackLevel + 1); /** * Раньше тут стояло if (!$v), что тоже неправильно, * ибо непустая строка '0' не проходит такую валидацию. */ if ('' === strval($v)) { Q::raiseErrorVariable($validatorClass = __FUNCTION__, $messages = ['Требуется непустая строка, но вместо неё получена пустая.'], $stackLevel + 1); } } }