Ejemplo n.º 1
0
 /**
  * @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);
 }
Ejemplo n.º 2
0
/**
 * 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;
}
Ejemplo n.º 3
0
 /**
  * @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;
 }
Ejemplo n.º 4
0
 /**
  * @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;
 }
Ejemplo n.º 5
0
Archivo: X.php Proyecto: mage2pro/core
 /**
  * @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;
 }
Ejemplo n.º 6
0
/**
 * @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);
        }
    }
}