Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   problemas al utilizar el patron singleton (http://www.forosdelweb.com/f68/problemas-utilizar-patron-singleton-570146/)

xayide 28/03/2008 06:46

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!!

Francisco01 28/03/2008 08:43

Re: problemas al utilizar el patron singleton
 
Puedes mostrar el codigo donde ejecutas los metodos de esa clase?

xayide 28/03/2008 09:30

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...

theUniC 28/03/2008 09:51

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!

GatorV 28/03/2008 10:04

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.

xayide 28/03/2008 10:36

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!


La zona horaria es GMT -6. Ahora son las 19:52.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.