shopProductsCollection::getProducts($fields, $offset = 0, $limit = null)

Если при запросе товаров явно не указать $limit, то вот тут

if ($limit === null) {
    if ($offset) {
        $limit = $offset;
        $offset = 0;
    } else {
        $limit = 50;
    }
}

происходит ерунда.

Например, при получении товаров в цикле кодом вида

$collection->getProducts("*", $offset)

где $offset последовательно принимает значения 0, 50, 100, то первые 2 ответа будут идентичными ну и далее в зависимости от условий.

1 ответ

  • 1
    Михаил Ушенин Webasyst 3 марта 2020 08:33 #

    Когда вы передаёте в метод только 2 аргумента, второй из них используется в качестве $limit (потому что $offset без $limit не имеет смысла). Если указанный таким образом $limit пуст (а пустой $limit не имеет смысла), то его значение по умолчанию — 50.

    Если вам нужно использовать второй аргумент именно в качестве $offset, то надо передавать и третий непустой аргумент, который будет использовтаться в качестве $limit.

    • +1
      Syrnik.com Syrnik.com 4 марта 2020 01:47 #

      Так себе логика. По сути у limit есть значение по умолчанию (50), но оно не работает нигде, кроме выборки первого результата.

      Было бы лучше, если б было

      shopProductsCollection::getProducts(string $fields, int $offset = 0, int $limit = 50)

      Но, подозреваю проблемы с наследниками

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите