/** * @param PersistConfig $config * @return SoapClient * @throws PersistException * */ protected function _connect(PersistConfig $config) { try { $paramArray = array('local_cert' => $config->get('certificate'), 'proxy_host' => $config->get('proxyhost'), 'proxy_port' => $config->get('proxyport'), 'proxy_login' => $config->get('username'), 'proxy_password' => $config->get('password'), 'trace' => 1); # Retornar em XML $resource = new \SoapClient($config->getDSN(), $paramArray); $this->_config = $config; return $resource; } catch (\Exception $ldape) { # @todo da mesma forma do PDO guardar log para o LDAP throw new PersistException($ldape->getMessage(), $ldape->getCode()); } }
/** * {@inheritdoc} * */ protected function _connect(PersistConfig $config) { try { $resource = new \PDO($config->getDSN(), $config->get('username'), $config->get('password')); # throws exception if anything goes wrong # only works with MySQL 4.x $resource->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); # get values as objects $resource->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ); # column names aways lowercase $resource->setAttribute(\PDO::ATTR_CASE, \PDO::CASE_LOWER); return $resource; } catch (\PDOException $pdoe) { # @todo um log com o error do PDO devera ser guardo throw new PersistException($pdoe->getMessage(), $pdoe->getCode()); } }
/** * Fábrica de Persist. * @example Persist::factory * @code * <?php * ... * Persist::factory('\lib\Persist', $persistConfig); * ... * ?> * @endcode * @param [string | Model] $namespace * @param PersistConfig $config * @return Persist * @throws PersistException * */ public static function factory($namespace = NULL, PersistConfig $config) { if (is_string($namespace)) { self::exists($namespace, TRUE); return new $namespace($config); } PersistException::throwsExceptionIfParamIsNull($namespace instanceof ModelAbstract, self::PERSIST_NAMESPACE_OR_MODEL_REQUIRED); # get the funcionality namespace $tmpNSFunc = current(explode(self::NAMESPACE_SEPARATOR . 'mvcb', $namespace->getNamespace())); $arrNS = explode(self::NAMESPACE_SEPARATOR, $tmpNSFunc); # get the funcionality name $tmpFuncy = end($arrNS); $tpl = '%1$s%2$spersist%2$s%3$s%2$s%4$sPersist'; $namespace = sprintf($tpl, $tmpNSFunc, self::NAMESPACE_SEPARATOR, $config->get('adapter'), ucfirst($tmpFuncy)); self::exists($namespace, TRUE); # instancia o ModuleDatabasePersist $tmpPersist = new $namespace($config); return $tmpPersist; }
/** * Fábrica de Connect. * * @param PersistConfig $config * @return Connect * @throws PersistException * */ public static function factory(PersistConfig $config) { $hash = $config->hash(); if (!isset(self::$_instance[$hash])) { $namespace = sprintf('%1$s%2$s%3$s%2$sConnect', __NAMESPACE__, self::NAMESPACE_SEPARATOR, $config->get('driver')); self::$_instance[$hash] = new $namespace($config); } return self::$_instance[$hash]; }
/** * Método que efetua a conexão com o serivdor Ldap. * * @param persistConfig $config * @throws PersistException * @see Parent::_connect() * */ protected function _connect(PersistConfig $config) { try { $resource = ldap_connect($config->getDSN()); $this->_config = $config; # Seto parametros de acordo com a versão do LDAP ldap_set_option($resource, LDAP_OPT_PROTOCOL_VERSION, $config->get('version')); # Seta se as referências segue a biblioteca LDAP e retornadas por servidores LDAP. ldap_set_option($resource, LDAP_OPT_REFERRALS, 0); return $resource; } catch (\Exception $exc) { throw new PersistException($exc->getMessage(), $exc->getCode()); } }
/** * Fábrica Connect * * @param PersistConfig $config * @return \br\gov\sial\core\persist\Connect * @throws PersistException * */ public static function factory(PersistConfig $config) { $hash = $config->hash(); $tmpID = $config->hash(); if (FALSE === isset(self::$_instance[$tmpID])) { $namespace = sprintf('\\br\\gov\\sial\\core\\persist\\%s\\Connect', $config->get('adapter')); self::$_instance[$tmpID] = $namespace::factory($config); } return self::$_instance[$tmpID]; }