Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class TConnection {
- /*
- * método open()
- * recebe o nome do banco de dados e instancia o objeto PDO correpondente
- */
- private function __construct() {
- }
- public static function open($name) {
- if (file_exists("/home/timocabral/aguia_app.core/$name.ini")) {
- $db = parse_ini_file("/home/timocabral/aguia_app.core/$name.ini");
- } else {
- //se não existir lança um erro
- throw new Exception("<h2>{Exception} = Erro ao conectar com o banco '{$name}' ::</h2> <p>Arquivo de configuração não encontrado</p>");
- }
- //Lê as informações contidas no arquivo
- $user = $db['user'];
- $pass = $db['pass'];
- $name = $db['name'];
- $host = $db['host'];
- $type = $db['type'];
- switch ($type) {
- case 'sqlite' :
- $conn = new PDO("sqlite:{$name}");
- break;
- case 'mysql' :
- $conn = new PDO("mysql:host=$host;dbname=$name", $user, $pass);
- break;
- }
- $conn->setAttribute(PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
- return $conn;
- }
- }
- ?>
- <?php
- final class TTransaction
- {
- /*
- * classe transação
- * esta classe prove métodos para manipular transações
- */
- private static $conn;
- //neste FW, o nome da base é definido na classe.
- //mas pode ser abstraido, deixando a responsabilidade das classes,
- //instanciar o nome do banco. ficando TTransaction::open(meubanco)
- //sendo esse meu banco de qualquer BD
- private static $database = array( 0 => 'timocabral', 1 => 'timocabral01');
- private static $logger; //objeto de log
- /*
- * método contrutor()
- * está declarado como private para impedir que se criem novas instÂncias
- */
- private function __construct() {}
- /*
- * método open()
- * abre uma transação e uma conexão com o BD
- * @param $databese = nome do banco de dados
- * */
- public static function open()
- { //nome do banco de dados que vc deseja.
- if(empty(self::$conn))
- {
- self::$conn = TConnection::open(self::$database[0]);
- //inicia a transação
- self::$conn->beginTransaction();
- }
- }
- /*
- * método get()
- * retorna a conexão ativa da transação
- */
- public static function get()
- {
- //retorna a conexão ativa
- return self::$conn;
- }
- public static function rollback()
- {
- if(self::$conn)
- {
- //desfaz as operações realizadas durante a transação
- self::$conn->rollback();
- self::$conn = NULL;
- }
- }
- /*
- * método close()
- * aplica as operações realizadas e fecha a transação
- */
- public static function close()
- {
- if(self::$conn)
- {
- //aplica as operações realizas
- //durante a transação.
- self::$conn->commit();
- self::$conn = NULL;
- }
- }
- /*
- *método setLogger()
- *define qual estratégia de log será usada
- */
- public static function setLogger(TLogger $logger){
- //pega o objeto $logger, e atribui ele a propriedade estatica self::$logger, armazenado-o na memória
- self::$logger = $logger;
- }
- /*
- *método Logg()
- *armazena uma mensagem no arquivo de log
- *baseada na estratégia de ($logger) atual;
- */
- public static function log($message){
- //verifica se existe um objeto logger na memória
- if(self::$logger){
- self::$logger->write($message);
- //na verdade essa chamada é:
- //$obj = new TLogger('arquivo.txt');
- //$obj->write('aqui escrevo no arquivo');
- }
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement