arrilot/bitrix-models

Одновременное использование моделей Элемента и Секции

vkryukov76 opened this issue · 3 comments

Случайно обнаружил такой баг:

Если в коде используются модели Элемента и Секции, то в свойство модели bxObject записывается класс первой вызванной модели.

Добавил дополнительную проверку в код

if (static::$bxObject && (get_class(static::$bxObject) == static::$objectClass) ) {
    return static::$bxObject;
}

if (static::$bxObject) {
return static::$bxObject;
}

Но не уверен в правильности решения

Привет, можешь показать пример твоего кода где проявляется ошибка?

Что-то вроде этого:

CModule::IncludeModule('iblock');

use Arrilot\BitrixModels\Models\SectionModel;
use Arrilot\BitrixModels\Models\ElementModel;

class SuperSection extends SectionModel
{
    /**
     * Corresponding iblock id.
     *
     * @return int
     */
    const IBLOCK_ID = 42;
}

class SuperElement extends ElementModel
{
    /**
     * Corresponding iblock id.
     *
     * @return int
     */
    const IBLOCK_ID = 42;
}

$elements =  SuperElement::query()->select('ID', 'NAME')->getList();
$sections =  SuperSection::query()->select('ID', 'NAME')->getList();


/*
$sections =  SuperSection::query()->select('ID', 'NAME')->getList();
$elements =  SuperElement::query()->select('ID', 'NAME')->getList();

*/


var_dump($elements->toArray());
var_dump($sections->toArray());

Спасибо, поправлено в 0.5.1
Что-то многовато магии в пхпшных статических свойствах.