Advertisement
Guest User

Untitled

a guest
May 2nd, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.43 KB | None | 0 0
  1. <?php
  2. class TConnection {
  3.  
  4.     /*
  5.      * método open()
  6.      * recebe o nome do banco de dados e instancia o objeto PDO correpondente
  7.      */
  8.     private function __construct() {
  9.     }
  10.  
  11.     public static function open($name) {
  12.  
  13.         if (file_exists("/home/timocabral/aguia_app.core/$name.ini")) {
  14.  
  15.             $db = parse_ini_file("/home/timocabral/aguia_app.core/$name.ini");
  16.  
  17.         } else {
  18.             //se não existir lança um erro
  19.             throw new Exception("<h2>{Exception} = Erro ao conectar com o banco '{$name}' ::</h2> <p>Arquivo de configuração não encontrado</p>");
  20.         }
  21.  
  22.         //Lê as informações contidas no arquivo
  23.         $user = $db['user'];
  24.         $pass = $db['pass'];
  25.         $name = $db['name'];
  26.         $host = $db['host'];
  27.         $type = $db['type'];
  28.  
  29.         switch ($type) {
  30.             case 'sqlite' :
  31.                 $conn = new PDO("sqlite:{$name}");
  32.                 break;
  33.             case 'mysql' :
  34.                 $conn = new PDO("mysql:host=$host;dbname=$name", $user, $pass);
  35.                 break;
  36.         }
  37.        
  38.         $conn->setAttribute(PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
  39.    
  40.         return $conn;
  41.  
  42.    
  43.     }
  44. }
  45. ?>
  46.  
  47.  
  48. <?php
  49. final class TTransaction
  50. {
  51.     /*
  52.      * classe transação
  53.      * esta classe prove métodos para manipular transações
  54.      */
  55.     private static $conn;
  56.     //neste FW, o nome da base é definido na classe.
  57.     //mas pode ser abstraido, deixando a responsabilidade das classes,
  58.     //instanciar o nome do banco. ficando TTransaction::open(meubanco)
  59.     //sendo esse meu banco de qualquer BD
  60.     private static $database = array( 0 => 'timocabral', 1 => 'timocabral01');
  61.     private static $logger; //objeto de log
  62.  
  63.      /*
  64.       * método contrutor()
  65.       * está declarado como private para impedir que se criem novas instÂncias
  66.       */
  67.  
  68.     private function __construct() {}
  69.     /*
  70.      * método open()
  71.      * abre uma transação e uma conexão com o BD
  72.      *  @param $databese = nome do banco de dados
  73.      * */
  74.     public static function open()
  75.     {  //nome do banco de dados que vc deseja.
  76.      
  77.         if(empty(self::$conn))
  78.         {
  79.             self::$conn = TConnection::open(self::$database[0]);
  80.             //inicia a transação
  81.             self::$conn->beginTransaction();
  82.            
  83.         }
  84.        
  85.     }
  86.      /*
  87.       * método get()
  88.       * retorna a conexão ativa da transação
  89.       */
  90.     public static function get()
  91.     {
  92.         //retorna a conexão ativa
  93.         return self::$conn;
  94.     }
  95.     public static function rollback()
  96.     {
  97.         if(self::$conn)
  98.         {
  99.             //desfaz as operações realizadas durante a transação
  100.             self::$conn->rollback();
  101.             self::$conn = NULL;
  102.         }
  103.     }
  104.      /*
  105.         * método close()
  106.         * aplica as operações realizadas e fecha a transação
  107.         */
  108.     public static function close()
  109.     {
  110.         if(self::$conn)
  111.         {
  112.         //aplica as operações realizas
  113.         //durante a transação.
  114.         self::$conn->commit(); 
  115.         self::$conn = NULL;
  116.            
  117.         }
  118.     }
  119.     /*
  120.     *método setLogger()
  121.     *define qual estratégia de log será usada
  122.     */
  123.     public static function setLogger(TLogger $logger){
  124.         //pega o objeto $logger, e atribui ele a propriedade estatica self::$logger, armazenado-o na memória
  125.         self::$logger = $logger;
  126.     }
  127.     /*
  128.     *método Logg()
  129.     *armazena uma mensagem no arquivo de log
  130.     *baseada na estratégia de ($logger) atual;
  131.     */
  132.     public static function log($message){
  133.         //verifica se existe um objeto logger na memória
  134.         if(self::$logger){
  135.             self::$logger->write($message);
  136.             //na verdade essa chamada é:
  137.             //$obj = new TLogger('arquivo.txt');
  138.             //$obj->write('aqui escrevo no arquivo');
  139.            
  140.         }
  141.     }
  142. }
  143.  
  144.  
  145. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement