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

problemas al utilizar el patron singleton

Estas en el tema de problemas al utilizar el patron singleton en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola a todos! quiero tener un array asociativo (como una tabla hash). Quiero que sólo haya un array y que se vaya añadiendo a ese ...
  #1 (permalink)  
Antiguo 28/03/2008, 06:46
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 2 meses
Puntos: 0
problemas al utilizar el patron singleton

hola a todos!

quiero tener un array asociativo (como una tabla hash). Quiero que sólo haya un array y que se vaya añadiendo a ese array.

Lo que me pasa es que con cada llamada se me borra lo anterior:

Código PHP:
<?php
//usando el patrón singleton
class HashTable{
    var 
$key;
    var 
$value;
    
    static private 
$hashtable NULL;
    
    private function 
__construct() {}
    
    static public function 
getInstance() {
       if (
self::$hashtable == NULL) {
          
self::$hashtable = new HashTable ();
       }
       return 
self::$hashtable;
    }
    
    function 
insert($key$val){
        
$hashtable[$key]=$val;        
        echo 
"en hashtable metodo insert";
        
print_r($hashtable);
    }
    function 
get($key){
        
$val=$hashtable[$key];
        
print_r($hashtable); 
    }
}
?>
tengo en la pantalla dos cajas de texto, meto valores y se meten en la tabla hash. Imprime
( [222
] => 1111

pero si vuelvo a la pantalla de las cajas de texto y meto otros valores, no me imprime los anteriores.

alguna sugerencia??
muchas gracias!!
  #2 (permalink)  
Antiguo 28/03/2008, 08:43
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Re: problemas al utilizar el patron singleton

Puedes mostrar el codigo donde ejecutas los metodos de esa clase?
  #3 (permalink)  
Antiguo 28/03/2008, 09:30
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas al utilizar el patron singleton

esta es la llamada

$hashtable=HashTable::getInstance();

$hashtable->insert($elkey, $elvalue);

es muy simple, pero no se guarda...
  #4 (permalink)  
Antiguo 28/03/2008, 09:51
 
Fecha de Ingreso: abril-2004
Mensajes: 39
Antigüedad: 20 años
Puntos: 2
Re: problemas al utilizar el patron singleton

Me parece que el patrón singleton está mal implementado en esa definición de classe. Yo te propongo el siguiente

Código PHP:
//usando el patrón singleton
class HashTable{
    var 
$key;
    var 
$value;
        
    private 
$hashtable;
    private static 
$instance NULL;
        
    private function 
__construct() {
        
$this -> hashtable = array();
    }
        
    static public function 
getInstance() {
        if (
self::$instance == NULL) {
            
self::$instance = new HashTable ();
        }
        return 
self::$instance;
    }
        
    function 
insert($key$val){
        
$this -> hashtable[$key]=$val;        
    }

    function 
get($key){
        
$val=$this -> hashtable[$key]; 
    }


Espero que te sirva!
Saludos!
__________________
Caiman Systems - Diseño y programación de aplicaciones de gestión y páginas web
  #5 (permalink)  
Antiguo 28/03/2008, 10:04
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: problemas al utilizar el patron singleton

Recuerda que aunque tu clase use el patrón Singleton, PHP no te guarda los valores entre diferentes requests o paginas, así que tu implícitamente debes de guardar tu variable en una base de datos, o una sesión o algún medio persistente para que los valores se retengan entre paginas.

Saludos.

PD Traslado tu tema a PHP Orientado a Objetos.
  #6 (permalink)  
Antiguo 28/03/2008, 10:36
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas al utilizar el patron singleton

Gracias! ya lo he solucionado.

Es verdad que entre páginas no se guardan las variables,y no las estaba pasando de ninguna manera.

Saludos!
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 10:16.