13 jul 2013

Clase estándar de conexión a Base de Datos (PHP & MySQL)

Si eres uno de los programadores que realiza aplicativos usando php sin frameworks, este información puede serte útil. Si bien es cierto que cada desarrollador tiene un estilo al momento de maquetar la estructura y el código propiamente dicho de las aplicaciones, es bueno considerar que para los métodos que se usan de manera reiterada, como el de conexión a Base de Datos, existen clases estándar, esta demás decir que muchos frameworks utilizan dichas clases y métodos estandarizados por las comunidades de desarrollo.


Archivo: DB.class.php
class DB {

    private static $instance;
    private $MySQLi;

    private function __construct(array $dbOptions) {

        $this->MySQLi = @ new mysqli(
                $dbOptions['db_host'], $dbOptions['db_user'], $dbOptions['db_pass'], $dbOptions['db_name']);

        if (mysqli_connect_errno()) {
            throw new Exception('Database error.');
        }

        $this->MySQLi->set_charset("utf8");
    }

    public static function init(array $dbOptions) {
        if (self::$instance instanceof self) {
            return false;
        }

        self::$instance = new self($dbOptions);
    }

    public static function getMySQLiObject() {
        return self::$instance->MySQLi;
    }

    public static function query($q) {
        return self::$instance->MySQLi->query($q);
    }

    public static function esc($str) {
        return self::$instance->MySQLi->real_escape_string(htmlspecialchars($str));
    }
}

En Lugar de explicar el código y los métodos que conforman la clase "db", vamos a pasar directamente a explicar el modo de uso de esta clase.

Creamos un archivo llamado index.php y escribimos el siguiente código

// Referencia a la clase db
require './db.class.php';

// Datos de la conexion
$dbOptions = array(
    'db_host' => 'localhost',
    'db_user' => 'sces',
    'db_pass' => 'sces',
    'db_name' => 'sces01'
);

try {
    DB::init($dbOptions);
    echo "Conexion establecida";
} catch (Exception $exc) {
    echo $exc->getTraceAsString();
}



En el siguiente post veremos la recuperación de datos. Hasta Pronto

No hay comentarios:

Publicar un comentario

Entradas populares