예제 #1
0
 public static function open($name)
 {
     // verifica se existe arquivo de configuração para este banco de dados
     $filename = TApplication::get_root_dir() . "/model/app.config/{$name}.ini";
     if (file_exists($filename)) {
         // lê o INI e retorna um array
         $db = parse_ini_file($filename);
     } else {
         // se não existir, lança um erro
         throw new Exception("Arquivo '{$name}' não encontrado");
     }
     // lê as informações contidas no arquivo
     $user = isset($db['user']) ? $db['user'] : null;
     $pass = isset($db['pass']) ? $db['pass'] : null;
     $name = isset($db['name']) ? $db['name'] : null;
     $host = isset($db['host']) ? $db['host'] : null;
     $type = isset($db['type']) ? $db['type'] : null;
     $port = isset($db['port']) ? $db['port'] : null;
     // descobre qual o tipo (driver) de banco de dados a ser utilizado
     switch ($type) {
         case 'mysql':
             $port = $port ? $port : '3306';
             TApplication::addCurrentTime('Pré acesso');
             $conn = new PDO("mysql:host={$host};port={$port};dbname={$name}", $user, $pass);
             TApplication::addCurrentTime('Acesso ao Banco');
             break;
         case 'pgsql':
             $port = $port ? $port : '5432';
             $conn = new PDO("pgsql:dbname={$name}; user={$user}; password={$pass}; host={$host};port={$port}");
             break;
         case 'sqlite':
             $conn = new PDO("sqlite:{$name}");
             break;
         case 'ibase':
             $conn = new PDO("firebird:dbname={$name}", $user, $pass);
             break;
         case 'oci8':
             $conn = new PDO("oci:dbname={$name}", $user, $pass);
             break;
         case 'mssql':
             $conn = new PDO("mssql:host={$host},1433;dbname={$name}", $user, $pass);
             break;
         default:
             throw new Exception("Banco de Dados '{$type}' não suportado");
     }
     // define para que o PDO lance exceções na ocorrência de erros
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     // define para que o PDO substitua strings vazias por valores nulos
     $conn->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);
     // retorna o objeto instanciado.
     return $conn;
 }
예제 #2
0
 public function prepare()
 {
     $result = array();
     $class_files = glob(TApplication::get_root_dir() . '\\model\\app.control\\*.class.php');
     foreach ($class_files as $path) {
         $classname = substr(basename($path), 0, -10);
         /** @var SimpleAction $obj */
         $obj = new $classname('SKIP');
         $result[$classname] = array("attrs" => $obj->get_input_keys(), "connRequired" => $obj->connected != null);
         // Atributos obrigatórios
     }
     return $result;
 }
예제 #3
0
function class_autoloader($classname)
{
    if (class_exists("TApplication")) {
        $root = TApplication::get_root_dir();
    } else {
        $root = dirname(__FILE__, 3);
    }
    $folders = array('model/app.ado', 'model/app.control');
    foreach ($folders as $folder) {
        $path = "{$root}/{$folder}/{$classname}.class.php";
        if (file_exists($path)) {
            include_once $path;
            return true;
        }
    }
    return false;
}