Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/01/2013, 17:57
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Duda singlenton

Cita:
Iniciado por sagitariosTheBest Ver Mensaje
Hola buenas tardes compañeros mi duda es la siguiente:


Como es bien sabido el patron de diseño singlenton es para crear instancia unica de una clase. he estado googleando y encontre varios ejemplos que usan este patron en clases con conexion a base de datos y estas clases incluyen metodos para enviar un string sql.
Hasta ahí, dices que hay "clases que incluyen métodos"

Cita:
Iniciado por sagitariosTheBest Ver Mensaje
Mi duda es ¿ Todas las clases que usan metodos para enviar string sql deben tener el mismo codigo del patron singlenton,
Aquí, dices que los "usan"...No es lo mismo "incluir" (supongo que te refieres a "declarar") que "usar".

Lo que supongo que habrás visto, es la implementación de un Singleton para encapsular la conexión a la base de datos, de forma que sólo exista 1 instancia de esa clase conexión.

La base del patrón Singleton es crear una clase cuyo constructor es privado (por lo que no puede instanciarse con "new" desde fuera de la clase), un método estático "getInstance()", para obtener una instancia de la clase, y una variable estática "$instance", donde se asigna la instancia única de esa clase.
Esa variable $instance se inicializa a null, y se crea desde el método getInstance() cuando es llamado por primera vez.

La idea detrás del Singleton, es que la creación de instancias de una clase, esté controlada por esa misma clase.En el caso del Singleton, la clase se encarga de que sólo haya 1 instancia suya.Se pueden hacer variaciones de la misma idea.
Cita:
Iniciado por sagitariosTheBest Ver Mensaje
es decir debiera copiar y pegar este codigo en cada clase que necesite crear una conexion y envio de string sql?
Los patrones de diseño no están pensados precisamente para que copies y pegues código..Aquí tienes una implementación básica de un singleton:
Código PHP:
Ver original
  1. class conn
  2. {
  3.     static $instance=null;
  4.     private function __construct()   
  5.     {
  6.        echo "CONSTRUYENDO";
  7.     }
  8.     public static function getInstance()
  9.     {
  10.          if(conn::$instance==null)
  11.              conn::$instance=new conn();
  12.          return conn::$instance;
  13.     }
  14.     public function select($q)
  15.     {
  16.         echo $q;
  17.     }
  18. }

Y aquí, como obtener la instancia, y llamar a sus métodos
Código PHP:
Ver original
  1. $connection=conn::getInstance();
  2. $connection->select("HOLA");
  3. // La siguiente linea provoca un fatal error.
  4. // $ins=new conn();