/** * Создание загрузчика данных и постановка первого задания * * @access public * @static * @param string $mapper * Имя маппера, которые обязауется подгружать данные * @param string $src_key * Индекс идентификатора * @param mixed $args * Массив или строка/число - однозначный идентификатор * @param array $data * Массив с результатами (если была уже агрегированная выборка) * @param array $batch * Массив оппераций, которые будут выполнены в параллели * @return Fetcher */ public static function create($mapper, $src_key, array $args = null, array &$data = [], array $batch = []) { $Self = new self(); if (is_string($mapper)) { $model = $mapper; $method = $args ? 'get' : 'getList'; } elseif (is_array($mapper)) { list($model, $method) = $mapper; } else { throw new Exception('Mapper can be string or array with 2 elements'); } $Self->model = $model; $Self->method = $method; $Self->src_key = $src_key; $Self->dst_key = $Self->getDstKey($src_key); $Self->args = $args; $Self->batch = $batch; $Self->data =& $data; return $Self; }