public function select($sql, $class = "", $all = FALSE, $array = array())
    {
        // Prepara a Query
        $sth = $this->prepare($sql);

        // Define os dados do Where, se existirem.
        foreach ($array as $key => $value) {
            // Se o tipo do dado for inteiro, usa PDO::PARAM_INT, caso contr�rio, PDO::PARAM_STR
            $tipo = (is_int($value)) ? PDO::PARAM_INT : PDO::PARAM_STR;

            // Define o dado
            $sth->bindValue("$key", $value, $tipo);
        }

        // Executa
        $sth->execute();

        // Executar fetchAll() ou fetch()?

        // Retorna a cole��o de dados (array multidimensional)


        if ($sth->rowCount() <= 0)
            return null;

        if ($class == "") {

            if ($all == false and $sth->rowCount() == 1) {
                $array = $sth->fetchAll(PDO::FETCH_OBJ);
                return array_shift($array);
            }

            return $sth->fetchAll(PDO::FETCH_OBJ);
        } else {
            if ($all == false and $sth->rowCount() == 1) {
                $array = $sth->fetchAll(PDO::FETCH_CLASS, $this->getClass($class));
                return array_shift($array);
            }

            return $sth->fetchAll(PDO::FETCH_CLASS, $this->getClass($class));
        }

    }