src/ReportTypes/ReportTypesRepository.php
protected function toArrayOfReportTypes($items)
    {
        $result = [];

        // Если влетело некоторое скалярное выражение - то преобразуем его в массив по разделителю
        if (is_scalar($items) && ! empty($items)) {
            $items = explode(',', trim((string) $items));
        }

        // Если элементом является объект, умеющим себя преобразовывать в массив - то преобразуем
        if (\is_object($items) && ! ($items instanceof ReportType) && \method_exists($items, 'toArray')) {
            $items = $items->toArray();
        }

        foreach ((array) $items as $key => $value) {
            if ($value instanceof ReportType) {
                // Если элементом уже является объект типа ReportType - то сразу его пушим в стек
                $result[] = $value;
            } elseif (\is_scalar($value) && ! empty($value)) {
                // Если влетела строка - то пушим в стек объект, у которого и имя, и UID равны этой строке
                $report_type = new ReportType;
                $report_type->setUid($value);
                $report_type->setName($value);

                $result[] = $report_type;
            } elseif (\is_array($value) || $value instanceof Traversable) {
                // Если массив или перебираемое дерьмо - то работаем с ним
                $report_type = new ReportType;
                $report_type->setName($key);
                $report_type->configure($value);

                $result[] = $report_type;
            }
        }

        return $result;
    }
protected function toArrayOfReportTypes($items)
    {
        $result = [];

        // Если влетело некоторое скалярное выражение - то преобразуем его в массив по разделителю
        if (is_scalar($items) && ! empty($items)) {
            $items = explode(',', trim((string) $items));
        }

        // Если элементом является объект, умеющим себя преобразовывать в массив - то преобразуем
        if (\is_object($items) && ! ($items instanceof ReportType) && \method_exists($items, 'toArray')) {
            $items = $items->toArray();
        }

        foreach ((array) $items as $key => $value) {
            if ($value instanceof ReportType) {
                // Если элементом уже является объект типа ReportType - то сразу его пушим в стек
                $result[] = $value;
            } elseif (\is_scalar($value) && ! empty($value)) {
                // Если влетела строка - то пушим в стек объект, у которого и имя, и UID равны этой строке
                $report_type = new ReportType;
                $report_type->setUid($value);
                $report_type->setName($value);

                $result[] = $report_type;
            } elseif (\is_array($value) || $value instanceof Traversable) {
                // Если массив или перебираемое дерьмо - то работаем с ним
                $report_type = new ReportType;
                $report_type->setName($key);
                $report_type->configure($value);

                $result[] = $report_type;
            }
        }

        return $result;
    }
protected function toArrayOfReportTypes ( $ items ) { $ result = [ ] ; // Если влетело некоторое скалярное выражение - то преобразуем его в массив по разделителю if ( is_scalar ( $ items ) && ! empty ( $ items ) ) { $ items = explode ( ',' , trim ( ( string ) $ items ) ) ; } // Если элементом является объект, умеющим себя преобразовывать в массив - то преобразуем if ( \ is_object ( $ items ) && ! ( $ items instanceof ReportType ) && \ method_exists ( $ items , 'toArray' ) ) { $ items = $ items -> toArray ( ) ; } foreach ( ( array ) $ items as $ key => $ value ) { if ( $ value instanceof ReportType ) { // Если элементом уже является объект типа ReportType - то сразу его пушим в стек $ result [ ] = $ value ; } elseif ( \ is_scalar ( $ value ) && ! empty ( $ value ) ) { // Если влетела строка - то пушим в стек объект, у которого и имя, и UID равны этой строке $ report_type = new ReportType ; $ report_type -> setUid ( $ value ) ; $ report_type -> setName ( $ value ) ; $ result [ ] = $ report_type ; } elseif ( \ is_array ( $ value ) || $ value instanceof Traversable ) { // Если массив или перебираемое дерьмо - то работаем с ним $ report_type = new ReportType ; $ report_type -> setName ( $ key ) ; $ report_type -> configure ( $ value ) ; $ result [ ] = $ report_type ; } } return $ result ; }
Преобразует входящее значение в массив объектов типа ReportType.

Принимает на вход массив данных о типах отчетов, и в их соответствии формирует коллекцию данных. Формат
массивов может быть следующим:

<code>
new ReportType('uid_0')

'uid_0'

'uid_0,uid_1'

[
'uid_1',
'uid_2',
]

[
'uid_1' => ['uid' => 'report_1_uid', 'description' => 'Some 1 description'],
'uid_2' => ['id' => 'report_2_uid',  'desc' => 'Some 2 description'],
['name' => 'some_3_name', 'id' => 'report_3_uid', 'description' => 'Some 3 description'],
]
</code>

@param string|array|array[]|object $items

@return ReportType[]|array
Преобразует входящее значение в массив объектов типа ReportType .