Decidí publicar algo que me a ayudado de base para mis programas en PHP orientados a objetos, y esto es el conector con la base de datos. Este objeto tiene la ventaja de que crea la conexión cuando se requiere y cierra la misma una vez terminada las consultas. Si la combinamos con la función autoload(), creo que obtenemos un buen componente para nuestra aplicación.
// Conector a la base de datos
class conector {
protected $conexion;
protected $servidor, $usuario, $contrasena, $bd:
protected $comprueba=false;
public $array=array();
// Se inicia esta funcion cuando se construye la clase
public function __construct(){
$args = func_get_args();
if(empty($args)){ // Si no hay parametros usa la configuracion por default
$this->servidor = SERVIDOR;
$this->usuario = USUARIO;
$this->contrasena = CONTRASENA;
$this->bd = BD;
}elseif($args[1]==NULL){ // Le un archivo enviado como unico parametro
if(file_exists($args[0])){
set_include_path(directorio());
include_once($args[0]);
$this->servidor = SERVIDOR;
$this->usuario = USUARIO;
$this->contrasena = CONTRASENA;
$this->bd = $args[0];
}else{
error("No se encontro el archivo para la conexion de la clase <i>mysql</i>");
break;
}
}elseif($args[3]!=NULL){ // Se envian 4 parametros [host,base de datos,usuario,constraseña]
$this->servidor = $args[0];
$this->bd = $args[1];
$this->usuario = $args[2];
$this->contrasena = $args[3];
}else{
error("Forma incorrecta de llamar el constructor de conexion de la clase <i>conector</i>");
break;
}
$this->conectar();
}
// Crea la conexion a la base de datos
private function conectar(){
if($this->comprueba){
$this->conexion = @mysql_connect($this->servidor,$this->usuario,$this->contrasena)
or die(error("Imposible conectarse al servidor <i>$this->servidor</i> con los datos
[usuario:<i>$this->usuario</i>] [contraseña:<i>$this->contrasena</i>]"));
@mysql_select_db($this->bd, $this->conexion) or die (error("No se encontro la base
de datos [<i>$this->bd</i>]"));
$this->comprueba=true;
}
}
// Cierra cualquier conexion a base de datos que el objeto pueda tener
public function __sleep(){
@mysql_close($this->conexion);
}
// Reestablecer cualquier conexion a base de datos que se pueda haber perdido
public function __wakeup(){
$this->conectar();
}
// Lista las tablas disponibles
public function tablas(){
$i=0;
$a=@mysql_list_tables($this->bd);
while($row=mysql_fetch_row($a))
$array[$i++]=$row[0];
return $array;
}
// Lista de los campos
public function campos($variable){
$i=0;
$a = @mysql_query("SHOW COLUMNS FROM ".$variable);
if (@mysql_num_rows($a) > 0)
while ($row = @mysql_fetch_assoc($a))
$array[$i++]=$row;
else
error('La tabla no contiene campos');
return $array;
}
Ahora tratare de explicar como se usa el objeto: Crear objeto conector:
$objeto = new conector( ['localhost','base_datos','usuario','password'] )
Para mandar llamar a la clase, se debe tener en cuenta los tres métodos para inicial la conexión a la base de datos que tiene la clase. El primero no lleva ningún parámetro y se hace tal y como se muestra en el ejemplo. Los parámetros para esta conexión son tomados directamente de un archivo de configuracion que tendra definidas las variables: SERVIDOR, BD, USUARIO y CONTRASENA.
$objeto = new conector();
También se pueden incluir parámetros, estos son 4 y serian [host,base de datos,usuario,constraseña], de esta manera puedes conectarte a múltiples bases de datos o servidores, con diferentes objetos.
$objeto1 = new conector('127.0.0.1','base','usuario','clave'); // se conecta un servido
$objeto2 = new conector('255.1.1.2','otra_base','usuario2','clave2'); // se conecta a otro servidor
Recordemos que la clase maneja las conexiones, por lo cual abre y cierra las conexiones automáticamente optimizando así los recursos del servidor.
Ademas contiene dos funciones, una para ver las tablas, y otra para ver los campos de las tablas.
Nota [010108]: Se agrego una comprobación de la conexión, por sugerencia del Ddaz.$objeto1->tablas();$objeto1->campos($nombre_tabla);

Related Articles
No user responded in this post
Leave A Reply