2017 © Pedro PelΓ‘ez
 

library bitrix-iblock-helper

image

arrilot/bitrix-iblock-helper

  • Thursday, January 25, 2018
  • by Arrilot
  • Repository
  • 3 Watchers
  • 10 Stars
  • 708 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 9 Versions
  • 16 % Grown

The README.md

Latest Stable Version, (*1)

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ большС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π½Π΅ поддСрТиваСтся

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° - ΠΌΡ‹ большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Битрикс Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Если Π²Π°ΠΌ интСрСсСн этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π½ΡΡ‚ΡŒΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ - Ρ„ΠΎΡ€ΠΊΠ½ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΈ создайтС Issue Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ помСстили здСсь ссылку Π½Π° Ρ„ΠΎΡ€ΠΊ., (*2)

Π₯элпСры для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°ΠΌΠΈ/Ρ…Π°ΠΉΠ»ΠΎΠ°Π΄Π±Π»ΠΎΠΊΠ°ΠΌΠΈ

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ прСдставляСт собой ΠΏΠ°Ρ€Ρƒ классов ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ, (*3)

  1. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΎΠ² ΠΏΠΎ ΠΈΡ… ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄Π°ΠΌ
  2. Π Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ…Π°ΠΉΠ»ΠΎΠ°Π΄Π±Π»ΠΎΠΊΠ°Ρ… ΠΏΠΎ названию Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ достигаСтся Π·Π° счёт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΈΠ· Π‘Π” Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° вызываСтся ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ВмСсто этого Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ· Π‘Π” ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ сразу ΠΏΠΎ всСм ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°ΠΌ/Ρ…Π°ΠΉΠ»ΠΎΠ°Π΄Π±Π»ΠΎΠΊΠ°ΠΌ ΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π΅Ρ‰Π΅ ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, (*4)

Установка

composer require arrilot/bitrix-iblock-helper, (*5)

ИспользованиС

Π˜Π½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΈ

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ использования - Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-хэлпСр:, (*6)

/**
 * ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ID ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ° ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ (ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ ΠΈ Ρ‚ΠΈΠΏΡƒ).
 *
 * @param string $code
 * @param string|null $type
 * @return int
 *
 * @throws RuntimeException
 */
function iblock_id($code, $type = null)
{
    return Arrilot\BitrixIblockHelper\IblockId::getByCode($code, $type);
}

Допустим, Π΅ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊ Ρ‚ΠΈΠΏΠ° other ΠΈ с ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ articles., (*7)

Π•Π³ΠΎ ID ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²: 1. $id = iblock_id('articles', 'other') - строгий Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 2. $id = iblock_id('other:articles') - Ρ‚ΠΎΠΆΠ΅ самоС 3. $id = iblock_id('articles') - Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π² случаС ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄Ρ‹ ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ., (*8)

НСзависимо ΠΎΡ‚ количСства Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² iblock_id() запрос Π² Π±Π°Π·Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π·Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ всСм ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°ΠΌ., (*9)

Π₯Π°ΠΉΠ»ΠΎΠ°Π΄Π±Π»ΠΎΠΊΠΈ

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ использования - Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-хэлпСры:, (*10)

/**
 * ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ…Π°ΠΉΠ»ΠΎΠ°Π΄Π±Π»ΠΎΠΊΠ° ΠΏΠΎ названию Π΅Π³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
 * ВсСгда выполняСт лишь ΠΎΠ΄ΠΈΠ½ запрос Π² Π‘Π” Π½Π° скрипт ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив Π²ΠΈΠ΄Π°:
 *
 * array:3 [
 *   "ID" => "2"
 *   "NAME" => "Subscribers"
 *   "TABLE_NAME" => "app_subscribers"
 * ]
 *
 * @param string $table
 * @return array
 */
function highloadblock($table)
{
    return Arrilot\BitrixIblockHelper\HLblock::getByTableName($table);
}

/**
 * ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ класса для Ρ…Π°ΠΉΠ»ΠΎΠ°Π΄Π±Π»ΠΎΠΊΠ° для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ $table.
 *
 * ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ `app_subscribers`:
 * $subscribers = highloadblock_class('app_subscribers');
 * $subscribers::getList();
 *
 * @param string $table
 * @return string
 */
function highloadblock_class($table)
{
    return Arrilot\BitrixIblockHelper\HLblock::compileClass($table);
}

/**
 * ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сущности для Ρ…Π°ΠΉΠ»ΠΎΠ°Π΄Π±Π»ΠΎΠΊΠ° для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ $table.
 * ВыполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.
 *
 * ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ `app_subscribers`:
 * $entity = \Arrilot\BitrixIblockHelper\HLblock::compileEntity('app_subscribers');
 * $query = new Entity\Query($entity);
 *
 * @param string $table
 * @return \Bitrix\Main\Entity\Base
 */
function highloadblock_entity($table)
{
    return Arrilot\BitrixIblockHelper\HLblock::compileEntity($table);
}

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Для увСличСния быстродСйствия ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π° уровня кэша для массива ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² НСобходимо ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ эти ΡƒΡ€ΠΎΠ²Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉ., (*11)

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ (Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ кэш) - ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массива Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ класса. По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½. Π­Ρ‚ΠΎ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ HTTP запроса, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ позваляСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ мноТСства запросов Π² Π‘Π”., (*12)

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ (внСшний кэш) - ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Ρ‰Π΅ ΠΈ Π²ΠΎ внСшнСм кэшС Ρ‡Π΅Ρ€Π΅Π· стандартный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Битрикса Π½Π° N ΠΌΠΈΠ½ΡƒΡ‚. По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΎΠ²., (*13)

Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² init.php (ΠΈΠ»ΠΈ ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ Ρ‚ΡƒΠ΄Π°):, (*14)

IblockId::setCacheTime(30 * 60); // ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌ ID всСх ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΎΠ² Π½Π° 30 ΠΌΠΈΠ½ΡƒΡ‚
HLblock::setCacheTime(30 * 60); // ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ всСх Ρ…Π°ΠΉΠ»ΠΎΠ°Π΄Π±Π»ΠΎΠΊΠΎΠ² Π½Π° 30 ΠΌΠΈΠ½ΡƒΡ‚

Бброс кэша

ΠŸΠ°ΠΊΠ΅Ρ‚ прСдоставляСт нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для сброса кэша. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΡ… использованиС Π½Π΅ трСбуСтся, Π½ΠΎ Π±Ρ‹Π²Π°ΡŽΡ‚ кСйсы ΠΊΠΎΠ³Π΄Π° Π±Π΅Π· Π½ΠΈΡ… Π½ΠΈΠΊΡƒΠ΄Π°., (*15)

// ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровСня кэша.
// По-сути СдинствСнный кСйс, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½ - ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊ/Ρ…Π»Π±Π»ΠΎΠΊ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ запросС с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· `iblock_id()`.
IblockId::flushLocalCache();
HLblock::flushLocalCache();

// ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня кэша.
// НуТна Π² случаС, Ссли Π²Ρ‹ Π΅Π³ΠΎ Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· Π°Π΄ΠΌΠΈΠ½ΠΊΡƒ/ΠΊΠΎΠ΄ ΠΈ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΆΠ΄Π°Ρ‚ΡŒ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ этого кэша.
IblockId::flushExternalCache();
HLblock::flushExternalCache();

// Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ использованиС внСшнСго кэша для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ запроса Ρ‡Π΅Ρ€Π΅Π·
IblockId::setCacheTime(0);
HLblock::setCacheTime(0);

The Versions

25/01 2018

dev-master

9999999-dev https://github.com/arrilot/bitrix-iblock-helper

  Sources   Download

MIT

The Requires

 

by Nekrasov Ilya

bitrix iblock

25/01 2018

0.3.2

0.3.2.0 https://github.com/arrilot/bitrix-iblock-helper

  Sources   Download

MIT

The Requires

 

by Nekrasov Ilya

bitrix iblock

26/11 2017

0.3.1

0.3.1.0 https://github.com/arrilot/bitrix-iblock-helper

  Sources   Download

MIT

The Requires

 

by Nekrasov Ilya

bitrix iblock

26/11 2017

0.3.0

0.3.0.0 https://github.com/arrilot/bitrix-iblock-helper

  Sources   Download

MIT

The Requires

 

by Nekrasov Ilya

bitrix iblock

20/07 2017

0.2.3

0.2.3.0 https://github.com/arrilot/bitrix-iblock-helper

  Sources   Download

MIT

The Requires

 

by Nekrasov Ilya

bitrix iblock

20/07 2017

0.2.2

0.2.2.0 https://github.com/arrilot/bitrix-iblock-helper

  Sources   Download

MIT

The Requires

 

by Nekrasov Ilya

bitrix iblock

25/06 2017

0.2.1

0.2.1.0 https://github.com/arrilot/bitrix-iblock-helper

  Sources   Download

MIT

The Requires

 

by Nekrasov Ilya

bitrix iblock

05/02 2017

0.2.0

0.2.0.0 https://github.com/arrilot/bitrix-iblock-helper

  Sources   Download

MIT

The Requires

 

by Nekrasov Ilya

bitrix iblock

03/02 2017

0.1.0

0.1.0.0 https://github.com/arrilot/bitrix-iblock-helper

  Sources   Download

MIT

The Requires

 

by Nekrasov Ilya

bitrix iblock