Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * ConnFire.class [ CONEXÃO FIREBIRD ]
- * Classe abstrata de conexão. Padrão SingleTon.
- * Retorna um objeto PDO pelo método estático getConn();
- */
- class ConnFire {
- private static $User = 'SYSDBA';
- private static $Pass = 'masterkey';
- //private static $Dbsa = 'cisel.ddns.net:D:\ADV\ADVDados\CISEL.GD';
- private static $Dbsa = 'c:\CISEL.GD';
- /** @var PDO */
- private static $Connect = null;
- private static $instance = null;
- /**
- * Conecta com o banco de dados com o pattern singleton.
- * Retorna um objeto PDO!
- */
- private static function Conectar() {
- try {
- if (self::$Connect == null):
- $dsn = 'firebird:dbname=' . self::$Dbsa;
- self::$Connect = new PDO($dsn, self::$User, self::$Pass);
- self::$Connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- endif;
- } catch (PDOException $e) {
- PHPErro($e->getCode(), $e->getMessage(), $e->getFile(), $e->getLine());
- die;
- }
- return self::$Connect;
- }
- /** Retorna um objeto PDO Singleton Pattern. */
- public static function getConn() {
- return self::Conectar();
- }
- /**
- * Construtor do tipo protegido previne que uma nova instância da
- * Classe seja criada atravês do operador `new` de fora dessa classe.
- */
- private function __construct() {
- }
- /**
- * Método clone do tipo privado previne a clonagem dessa instância
- * da classe
- *
- * @return void
- */
- private function __clone() {
- }
- /**
- * Método unserialize do tipo privado para previnir que desserialização
- * da instância dessa classe.
- *
- * @return void
- */
- private function __wakeup() {
- }
- public static function getInstance() {
- if (self::$instance == null) {
- self::$instance = new ConnFire();
- }
- return self::$instance;
- }
- /**
- * save verifica se no array associativo passado
- * tem a chave primária e não está vazia
- * se tiver, então realiza o update, se não realiza o insert
- * em todas as situações a chave primária é retornada
- * @param type $data, um array associativo, onde
- * as chaves possum o mesmo nome das colunas da tabela
- * e o valor será inserido nas colunas da mesma
- * @throws Exception
- */
- public function save($data, $tabela, $chavePrimaria) {
- $arrayKeys = array_keys($data);
- $arrayValues = array_values($data);
- $operacao = 'I';
- if (in_array($chavePrimaria, $arrayKeys) && !empty($arrayValues[0])) {
- $operacao = 'U';
- $valorChavePrimaria = $arrayValues[0];
- unset($arrayKeys[0]);
- unset($arrayValues[0]);
- }
- $qtd = count($arrayKeys);
- try {
- $values = "";
- $campos = "";
- $totalCampos = count($arrayKeys);
- $i = 0;
- if ($operacao == 'I') {
- foreach ($arrayKeys as $indice => $nomeCampoBase) {
- $valorCampo = $arrayValues[$indice];
- $campos .= "{$nomeCampoBase}";
- if (is_float($valorCampo) || is_integer($valorCampo)) {
- $values .= " {$valorCampo} ";
- } else {
- $values .= " '{$valorCampo}' ";
- }
- if ($totalCampos > 1 && $i < $totalCampos - 1) {
- $values .= ",";
- $campos .= ",";
- }
- $i++;
- }
- } else {
- foreach ($arrayKeys as $indice => $nomeCampoBase) {
- $valorCampo = $arrayValues[$indice];
- if (is_float($valorCampo) || is_integer($valorCampo)) {
- $values .= "{$nomeCampoBase}={$valorCampo} ";
- } else {
- $values .= "{$nomeCampoBase}='{$valorCampo}' ";
- }
- if ($totalCampos > 1 && $i < $totalCampos - 1) {
- $values .= ",";
- }
- $i++;
- }
- }
- if ($operacao == 'I') {
- $stringSql = "INSERT INTO {$tabela} ({$campos}) VALUES({$values}) ";
- //echo $stringSql;die;
- $this->getConection()->query($stringSql)->execute();
- return 10;
- } else {
- $stringSql = "UPDATE {$tabela} SET {$values} WHERE {$chavePrimaria}={$valorChavePrimaria} ";
- $this->getConection()->query($stringSql);
- return 10;
- }
- } catch (Exception $ex) {
- throw new Exception("Falha ao inserir dados:" . $ex->getMessage());
- }
- }
- public function getConection() {
- return self::Conectar();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement