/** * @override * @param string $value * @return bool */ public function isValid($value) { $this->prepareValidation($value); /** * Избавляет от сбоев типа * «Система не смогла распознать значение «368.» типа «string» как вещественное число.» * http://magento-forum.ru/topic/4648/ * Другими словами, думаю, что будет правильным * конвертировать строки типа «368.» в вещественные числа без сбоев. * * Обратите внимание, что 368.0 === floatval('368.'), * поэтому функция @see df_float() * сконвертирует строку «368.» в вещественное число без проблем. */ if (is_string($value) && df_ends_with($value, '.') && '.' !== $value) { $value .= '0'; } return $this->getZendValidator('en_US')->isValid($value) || $this->getZendValidator('ru_RU')->isValid($value); }
/** * Возвращает соответствие между числовыми кодами, * возвращаемыми функцией @see preg_last_error(), * и их символьными соответствиями: PREG_NO_ERROR PREG_INTERNAL_ERROR PREG_BACKTRACK_LIMIT_ERROR PREG_RECURSION_LIMIT_ERROR PREG_BAD_UTF8_ERROR PREG_BAD_UTF8_OFFSET_ERROR * @return array(int => string) */ private static function getErrorCodeMap() { /** @var array(int => string) $result */ static $result; if (!$result) { /** @var array(string => array(string => int)) $constants */ $constants = get_defined_constants(true); foreach ($constants['pcre'] as $textCode => $numericCode) { /** @var string $textCode */ /** @var int $numericCode */ if (df_ends_with($textCode, '_ERROR')) { $result[$numericCode] = $textCode; } } } return $result; }
/** * 2016-07-31 * @return bool */ private function isClosure() { if (!isset($this->{__METHOD__})) { $this->{__METHOD__} = df_ends_with($this->functionName(), '{closure}'); } return $this->{__METHOD__}; }
/** * 2016-03-08 * Добавляет к строке $s окончание $tail, * если она в этой строке отсутствует. * @param string $s * @param string $tail * @return string */ function df_append($s, $tail) { return df_ends_with($s, $tail) ? $s : $s . $tail; }