Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

¿que es Singleton?

Estas en el tema de ¿que es Singleton? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola, no se si esto debería preguntarlo aquí, pero si no es asi seguro esta cerca. Hace poco que estoy comenzando con php5 (tarde), y ...
  #1 (permalink)  
Antiguo 12/09/2007, 12:39
Avatar de Sr.Zzz  
Fecha de Ingreso: septiembre-2007
Mensajes: 42
Antigüedad: 16 años, 7 meses
Puntos: 0
¿que es Singleton?

hola, no se si esto debería preguntarlo aquí, pero si no es asi seguro esta cerca.
Hace poco que estoy comenzando con php5 (tarde), y estoy viendo aparecer mucho la palabra "Singleton", eh buscado por todos lados pero no me queda claro que es. Me gustaría que me explicaran o si es posible me pasaran alguna web(en español) que hable sobre ese tema.
Gracias
  #2 (permalink)  
Antiguo 12/09/2007, 12:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: ¿que es Singleton?

Te recomiendo busques en este foro es un tema ya tratado y discutido, pero para resumirlo:

Singleton es un patron de disenio de software, con el cual una clase solo tiene una instancia especifica de esa clase, no se puede crear con el keyword New, tiene que se rescatado via una funcion estatica del tipo: Singleton::getInstance(), ya que esa funcion checa si existe la instancia y si no la crea.

Saludos.
  #3 (permalink)  
Antiguo 12/09/2007, 12:56
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: ¿que es Singleton?

Singleton es un patron de diseño que se utiliza cuando de una clase sólo necesitas una instancia... por ejemplo, para conectar a una base de datos, sólo necesitas conectar una vez, pero si en algún lugar no tenés acceso a la conexión la idea es llamar a algún método para poder conseguirlo y utilizar la misma instancia que antes...

Cómo ejemplo, está explicado acá
  #4 (permalink)  
Antiguo 12/09/2007, 15:44
Avatar de Sr.Zzz  
Fecha de Ingreso: septiembre-2007
Mensajes: 42
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: ¿que es Singleton?

GatorV y Seppo, muchas gracias por responder, y de apoco empiezo a familiarizarme con php5.
Saludos...

PD: aguante CABJ
  #5 (permalink)  
Antiguo 25/10/2007, 09:22
 
Fecha de Ingreso: octubre-2007
Mensajes: 21
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: ¿que es Singleton?

pero seria bueno que pusieran un ejemplo... codigo para ilustrarnos mejor no? pero con casos reales...
  #6 (permalink)  
Antiguo 25/10/2007, 09:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: ¿que es Singleton?

Es muy simple:
Código PHP:
class Singleton {
       private 
$variable;
       private static 
$_instance null;
       
       private function 
__construct() {
               
$this->variable "inicio";
       }

       public static function 
getInstance() {
               if( !
self::$_instance instanceof self ) {
                        
self::$_instance = new self();
               }

               return 
self::$_instance;
       }

       public function 
setMessage($var) {
              
$this->variable $var;
       }

       public function 
getMessage() {
              return 
$this->variable;
       }

Solo es controlar que exista una instancia del objeto, y es lo que te provee el patron Singleton. Puedes ver como funciona asi:
Código PHP:

$objeto 
Singleton::getInstance();
echo 
$objeto->getMessage(); // Imprime "Inicio"

function algo() {
     
$obj Singleton::getInstance();

     
$obj->setMessage("Cambiado desde dentro de algo!!!");
}

algo();
echo 
$objeto->getMessage(); // Imprime: "Cambiado desde dentro de algo!!!" 
Saludos.
  #7 (permalink)  
Antiguo 25/10/2007, 10:19
 
Fecha de Ingreso: octubre-2007
Mensajes: 21
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: ¿que es Singleton?

claro pero si yo tubiera varias clases como DB, paginacion, estadisticas como las
implementaria a Singleton?

Gracias por responder tan rapido
  #8 (permalink)  
Antiguo 25/10/2007, 10:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: ¿que es Singleton?

Como te comento, Singleton es un patron de diseño de software, tu lo puedes implementar en N clases, si es lo que necesitas o en una sola, no estas restringido a un numero para implementarla, solo es cuestion que sigas el patron y lo implementes en tu clase.

Saludos.
  #9 (permalink)  
Antiguo 25/10/2007, 17:35
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 3 meses
Puntos: 2
Re: ¿que es Singleton?

Hola, Guau... impresionado quedo con ese singleton !!! en concreto el método getInstance que pusiste GatorV Ultra simple, limpio.

Como aporte akí [1*] muestro el que estoy usando ahora mismo. No obstante me parece le copiaré el getInstance a GatorV Bueno, copiaré, estudiaré y analizaré ese codigo.

[1*] http://www.forosdelweb.com/f68/spl-a...metido-528296/

Un saludo ;) Sigan así !!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:25.