Ver Mensaje Individual
  #12 (permalink)  
Antiguo 10/02/2010, 01:59
Avatar de maturano
maturano
 
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: clase conexión a MYSQL

Cita:
Iniciado por neodani Ver Mensaje
Como se trata de un constructor hay que poner los datos de conexión directamente en la definición de la clase?


Código PHP:
Ver original
  1. private function __construct(){
  2.         $this->conexion = @mysql_connect('localhost', 'root', 'pass23525');
  3.         mysql_select_db('mibasedatos', $this->conexion);
  4.         $this->queries = 0;
  5.         $this->resource = null;
  6.     }
Puede hacerse, más no es una obligación y tendría un gran defecto hacerlo de esa manera: tu código no es reusable.

Querrás ocupar tu clase en otro proyecto, en otra aplicación que trabaja con otra base de datos, tienes la opción de copiar el archivo y editarlo adaptando los datos para tu nueva conexión, pero ¿qué pasa cuando detectes que hay un problema en tu código?; tendrás que editar todos los archivos; DRY.


El constructor no deja de ser un método, e igual puede aceptar parámetros. Así está definida la clase que aquí se presentó (origen de este tema), detente un momento a ver su definición. Como el método se ejecuta automáticamente, los parámetros son pasados al momento de instanciar la clase, ese es el único detalle.


En términos generales, el constructor es un recurso para "cumplir los requisitos mínimos del objeto". En el caso de una clase que representa una Base de datos, lo mínimo que necesitas son los datos para realizar la conexión, esa información es entonces candidata a ser requerida por el constructor.

Código PHP:
Ver original
  1. <?php
  2. // Incluyes la clase de donde quiera que esté
  3. require 'Clase_BaseDeDatos.php';
  4.  
  5. // Instancias pasando la información que utilizará para conectarse
  6. $db = new Clase_BaseDeDatos('usuario', 'contraseña', 'baseDatos');
Ve que puedes hacer lo mismo en cualquier proyecto (claro, que se encuentre en la misma máquina) pasando diferentes parámetros para que cada uno trabaje con su propia conexión. Utilizas el mismo código, en caso de alguna modificación, todo quien usa esa clase se vería beneficiado (o afectado ).

Por favor, lee los enlaces que he estado dejando.
__________________
I ♥ The Music!

Última edición por maturano; 10/02/2010 a las 02:05