/** * o primeiro param pode ser uma Query ou um objeto Entity. Se uma Entity for informado, então Config * torna-se-á obrigatório devido a necessidade de estabelecer a conexao com o respositorio de dados. * a fonte de dados poderá ser informado por meio de terceiro para ou omitido para ser utilizado * a fonte de dados padrao. * * @param DSLinkerReferenceable $target * @param Config $config * @param string $dsName * */ public function __construct(DSLinkerReferenceable $target, Config $config = NULL, $dsName = 'default') { # se o target for uma referencia para Entity ou Query entao sera # necessario um objeto executor de consulta Persist if ($target instanceof Entity || $target instanceof QueryAbstract) { $info = $config->get($config->get($dsName)); $target = QueryAbstract::factory($info->get('driver'), $target); PersistConfig::registerConfigs($config->toArray()); $pConfig = $configPersist = PersistConfig::factory($config->get($dsName)); $namespace = sprintf('br\\gov\\sial\\core\\persist\\%s\\Persist', $pConfig->get('adapter')); $executor = Persist::factory($namespace, $pConfig); $target = $executor->execute($target); } $this->_result = $target; /* necessario para tornar o */ $this->next(); }
/** * Cria objeto persist do mesmo tipo da Model. * * @name _getPersist * @param string $dsName * @return PersistConfig * */ private function _factory($dsName) { return Persist::factory($this, PersistConfig::factory($dsName)); }