/** * @param string $text * @param int $requiredLength * @param bool $addDots [optional] * @return string */ public function chop($text, $requiredLength, $addDots = true) { df_param_string($text, 0); df_param_integer($requiredLength, 1); df_param_between($requiredLength, 1, 0); df_param_boolean($addDots, 2); return mb_strlen($text) <= $requiredLength ? $text : df_ccc('', $this->trim(mb_substr($text, 0, $requiredLength - ($addDots ? 3 : 0))), $addDots ? '...' : null); }
/** * 2016-03-26 * @param string|M $model * Идентификатор необязательно является целым числом, * потому что объект может загружаться по нестандартному ключу * (с указанием этого ключа параметром $field). * Так же, и первичный ключ может не быть целым числом (например, при загрузке валют). * @param string|int $id * @param bool $throwOnAbsence [optional] * @param string|null $field [optional] * @return M|null */ function df_load($model, $id, $throwOnAbsence = true, $field = null) { df_assert($id); if (!is_null($field)) { df_param_string($field, 3); } /** @var M|null $result */ $result = is_string($model) ? df_om()->create($model) : $model; df_assert($result instanceof M); $result->load($id, $field); if (!$result->getId()) { if (!$throwOnAbsence) { $result = null; } else { df_error('A model of class «%s» with ID «%s» is absent.', get_class($result), $id); } } return $result; }
/** * @param string $message * @return Df_YandexMarket_Helper_Data */ public function log($message) { df_param_string($message, 0); Mage::log($message, null, 'rm.yandex.market.log', true); return $this; }
/** * @param int $number * @param string $gender * @return string */ private function getNaturalNumberInWords($number, $gender) { df_param_integer($number, 0); df_param_between($number, 0, 0, self::MAX_NUMBER); df_param_string($gender, 1); df_assert_in($gender, [self::GENDER__MALE, self::GENDER__FEMALE]); /** @var string $result */ $result = 'ноль'; if (0 !== $number) { $result = preg_replace(['/s+/', '/\\s$/'], [' ', ''], $this->getNum1E9($number, $gender)); } df_result_string($result); return $result; }
/** * @param string|null $key * @param mixed $value * @param string[]|bool $wrapInCData [optional] * @return X */ private function importString($key, $value, $wrapInCData = []) { /** @var bool $wrapInCDataAll */ $wrapInCDataAll = is_array($wrapInCData) ? false : !!$wrapInCData; $wrapInCData = df_nta($wrapInCData); /** * null означает, что метод importString * не должен создавать дочерний тэг $key, * а должен добавить текст * в качестве единственного содержимого текущего тэга */ if (!is_null($key)) { df_param_string($key, 0); } /** @var string $keyAsString */ $keyAsString = is_null($key) ? $this->getName() : $key; /** * @var bool $valueIsString */ $valueIsString = is_string($value); /** @var string $valueAsString */ $valueAsString = null; try { $valueAsString = $valueIsString ? $value : df_string($value); } catch (E $e) { df_error("Не могу сконвертировать значение ключа «%s» в строку.\n%s", $keyAsString, df_ets($e)); } /** @var bool $needWrapInCData */ $needWrapInCData = $wrapInCDataAll; if ($valueIsString && $valueAsString) { /** * Поддержка синтаксиса array( 'Представление' => df_cdata( $this->getAddress()->format( Mage_Customer_Model_Attribute_Data::OUTPUT_FORMAT_TEXT ) ) ) * Обратите внимание, что проверка на синтаксис[[]] должна предшествовать * проверке на принадлежность ключа $keyAsString в массиве $wrapInCData, * потому что при соответствии синтаксису[[]] нам надо удалить из значения символы[[]]. * Обратите внимание, что нам нужно выполнить проверку на синтаксис df_cdata ([[]]) * даже при $wrapInCDataAll = true, потому что маркеры [[ и ]] из данных надо удалять. */ /** * Перед вызовом медленной функции @see preg_match * выполняем более быструю и простую проверку @see df_contains */ if (df_contains($valueAsString, '[[') && df_contains($valueAsString, ']]')) { /** @var string $pattern */ $pattern = "#\\[\\[([\\s\\S]*)\\]\\]#mu"; /** @var string[] $matches */ $matches = []; if (1 === preg_match($pattern, $valueAsString, $matches)) { $valueAsString = $matches[1]; $needWrapInCData = true; } } $needWrapInCData = $needWrapInCData || in_array($keyAsString, $wrapInCData); } /** @var X $result */ $result = $needWrapInCData ? is_null($key) ? $this->setCData($valueAsString) : $this->addChildText($keyAsString, $valueAsString) : (is_null($key) ? $this->setValue($valueAsString) : $this->addChild($keyAsString, $valueAsString)); df_assert($result instanceof X); return $result; }
/** * @param string $paramValue * @param int $paramOrdering zero-based * @param int $stackLevel [optional] * @return void * @throws DFE */ function df_param_string_not_empty($paramValue, $paramOrdering, $stackLevel = 0) { df_param_string($paramValue, $paramOrdering, $stackLevel + 1); if (df_enable_assertions()) { /** * Раньше тут стояло: * $method->assertParamIsString($paramValue, $paramOrdering, $stackLevel + 1) * * При второй попытке тут стояло if (!$paramValue), что тоже неправильно, * ибо непустая строка '0' не проходит такую валидацию. */ if ('' === strval($paramValue)) { Q::raiseErrorParam($validatorClass = __FUNCTION__, $messages = ['Требуется непустая строка, но вместо неё получена пустая.'], $paramOrdering, $stackLevel + 1); } } }