Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 1477 Просмотров
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Есть число с фиксированным набором знаков, необходимое кол-во знаков дописывается нулями в начале перед числом. Число вообще может быть равно 0, в этом случае оно будет выглядеть как '000000000000'. Число храниться в базе как строка и выводится во фронт компонентом. Вывод нужно сделать с форматированием, вставив пробелы в качестве разделителя групп: '000 000 000 000'. Как это можно реализовать быстро? number_format($this->escape($this->item->code), 0, '', ' ') выводит '0'. Имеется ли в php функция, аналогичная number_format, но учитывающая необходимое фиксированное кол-во знаков в результате?
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Форматирование числа в ведущими 0
« Ответ #1 : 07.11.2014, 22:11:34 »
можно так
Код
$code = '000000000000'.$this->item->code;
$code = substr($code, -12);

$res = '';
$g = 0;
for ($i = 0; $i < strlen($code); $i++) {
  if ($g == 3) {
    $res .= ' ';
    $g = 0;
  }

  $g++;
  $res .= $code[$i];
}

echo $res;
« Последнее редактирование: 07.11.2014, 23:58:42 от icom »
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
*

fsv

  • Живу я здесь
  • 2785
  • 413 / 2
Re: Форматирование числа в ведущими 0
« Ответ #3 : 07.11.2014, 23:01:34 »
sprintf / printf / +доработать
Веб-разработка: заказ. Только новая разработка.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Форматирование числа в ведущими 0
« Ответ #4 : 07.11.2014, 23:48:45 »
Велосипед:
Код: php
  /*
   * string форматируемое число
   * int общее кол-во символов
   * int кол-во символов в блоке
  */
  function f_number($num,$rlenght,$rcount) {
    $num = preg_replace("[^0-9]",'',$num);
    if ($rlenght) {
      if (strlen($num) < $rlenght) {
        $num = str_pad($num, $rlenght, '0', STR_PAD_LEFT);
      } else if (strlen($num) > $rlenght) {
        $num = substr($num,0,$rlenght);
      }
    } else {
      $rlenght = strlen($num);
    }

    $result = '';
    while (strlen($num) > $rcount) {
      $result = substr($num,-$rcount).' '.$result;
      $num = substr($num,0,-$rcount);
    }
    if (strlen($num))
      $result = $num.' '.$result;

    return $result;
  }
Работает, меня устраивает. Оптимизация приветствуется.
« Последнее редактирование: 07.11.2014, 23:55:06 от AlekVolsk »
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Форматирование числа в ведущими 0
« Ответ #5 : 08.11.2014, 00:00:14 »
можно так
Код
$code = '000000000000'.$this->item->code;
$code = substr($code, -12);

$res = '';
$g = 0;
for ($i = 0; $i < strlen($code); $i++) {
  if ($g == 3) {
    $res .= ' ';
    $g = 0;
  }

  $g++;
  $res .= $code[$i];
}

echo $res;

а лучше так
Код
echo chunk_split(str_pad($this->item->code, 12, '0', STR_PAD_LEFT), 3, ' ');
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Форматирование числа в ведущими 0
« Ответ #6 : 08.11.2014, 00:09:42 »
Хороший рефакторинг )) но кол-во знаков может быть и не кратным кол-ву знаков в блоке, т.е. не 12 и 3, а 9 и 4, тогда
Код: php
echo chunk_split(str_pad('0', 9, '0', STR_PAD_LEFT), 4, ' ');
вернет '0000 0000 0', а надо '0 0000 0000', т.о. chunk_split() не подходит, ибо разбиение не стой стороны начинает.
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Форматирование числа в ведущими 0
« Ответ #7 : 08.11.2014, 00:26:01 »
Код: php
echo strrev(chunk_split(strrev(str_pad('0', 9, '0', STR_PAD_LEFT)), 4, ' '));
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Форматирование числа в ведущими 0
« Ответ #8 : 08.11.2014, 00:28:15 »
Шиворот-навыворот-задом-наперед )))

Код: php
  function f_number($num,$rlenght,$rcount) {
    return strrev(chunk_split(strrev(str_pad($num, $rlenght, '0', STR_PAD_LEFT)), $rcount, ' '));
  }
Работает, решено.
« Последнее редактирование: 08.11.2014, 00:32:19 от AlekVolsk »
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Форматирование числа в ведущими 0
« Ответ #9 : 08.11.2014, 00:33:38 »
Код: php
function f_number($num,$rlenght,$rcount) {
    return strrev(chunk_split(strrev(str_pad($num, $rlenght, '0', STR_PAD_LEFT)), $rcount, ' '));
}
окончательный вариант)

UPD: а, уже исправил)
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Форматирование числа в ведущими 0
« Ответ #10 : 08.11.2014, 00:41:41 »
Общая длина может быть произвольной, а может и фиксированной, согласно заданным параметрам (используется в компоненте).
Если длина фиксированная, а строка больше заданной длины, сделаем ей обрезание.
А еще бывают случаи, когда строка уже содержит лишние пробелы не в тех местах где нужно (данные импортируются на сайт извне).

Окончательный вариант пока так:
Код: php
  protected function f_number($num,$rlenght,$rcount) {
    $num = preg_replace("[^0-9]",'',$num);
    if ($rlenght) {
      if (strlen($num) > $rlenght)
        $num = substr($num,0,$rlenght);
    } else {
      $rlenght = strlen($num);
    }
    return strrev(chunk_split(strrev(str_pad($num, $rlenght, '0', STR_PAD_LEFT)), $rcount, ' '));
  }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Форматирование текста. Вопрос связан с MySQL

Автор Аня

Ответов: 6
Просмотров: 1308
Последний ответ 06.05.2018, 00:35:31
от Аня
Сортировка материалов категории, содержащии в названии числа

Автор RezistoR

Ответов: 2
Просмотров: 1099
Последний ответ 15.12.2015, 23:49:36
от robert