Conexion php mysql de forma prolija

Una de las cosas mas importantes en un proyecto web es la organización del código para permitir la escalabilidad del mismo. Les voy a enseñar una manera rápida y sencilla de “ordenar” el código en lo que a conexiones a bases de datos se refiere. Lo voy a hacer en php orientado a objetos, aunque de forma muy básica. Esta metodología o esquema es valida para cualquier lenguaje de programación.

Primero vamos a crear una clase que solo se encargara de la conexión a nuestra base de datos y de la cual heredaremos:

abstract class Database extends PDO
{
        protected $_db;

    public function __construct() 
        {
        parent::__construct(
                'mysql:host=' . '192.168.0.10' .
                ';dbname=' . 'camdev',
                'camdev', 
                'juancito', 
                array(
                    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES ' . 'utf8',
                                        PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION
                    ));

        $this->_db = $this;        
    }
}

Ahora todas la conexiones que haremos seran clases que extiendan a esta y haremos una por cada tabla. Que pasa cuando hacemos inner join, pues sencillo siempre usamos una tabla que es mas importante que la otra pues en esa clase meteriamos el inner.

Busca información acerca de la clase PDO en php, que es de donde hereda todo esto, es bastante sencilla de utilizar.

Ahora crearemos una clase por usuarios para administrar nuestra tabla de usuarios. Como podes observar hereda de database la cual hereda de pdo. También te darás cuenta que no uso un echo o algo similar en esta clase si no que retorno un array asociativo con los valores, por que esta es la manera correcta de hacerlo, separando el modelo ( la base de datos ) de la vista que es lo que muestras al usuario: tablas, formularios, texto, el html, etc.

Para guardar datos lo harías de forma similar, crearías un array y se lo pasarías a una función guardarUsuarios por ejemplo

require_once 'Database.php';
class Usuarios_Model extends Database
{
        function __construct(){

                parent::__construct();

        }
        function getAll(){
                $st = $this->_db->query('select * from usuarios');
                $st->execute();
                return $st->fetchAll();
        }
        function getUsuario($id)
        {
                $st = $this->_db->prepare('select * from usuarios where id_usuario = ?');

                $st->execute(array($id));
                return $st->fetch();
        }
}

Para ver el registro simplemente harias en tu archivo index.php por ejemplo:

<?

require_once(‘Usuarios_Model.php);
$usuarios_model = new Usuarios_Model();

foreach($usuarios_model ->getAll() as $usuario){

echo $usuario[‘nombre_del_campo_db’];
echo $usuario[‘otro_nombre_del_campo_db’];
}
?>

Si te das cuenta de lo ha mejorado te aconsejo buscar el patrón mvc en php , o algunos de los frameworks que lo implementan de forma nativa, Zend, Cake, Symphony y muchos otros. Aunque la curva de aprendizaje es para considerarlo, a la larga ahorras mucho tiempo.

Anuncios

Un pensamiento en “Conexion php mysql de forma prolija

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s