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

Sesiones y Registro de una clase

Estas en el tema de Sesiones y Registro de una clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, estoy haciendo una clase para guardar una serie de datos en ejecución, en plan carrito de la compra, pero con otra estructura ...
  #1 (permalink)  
Antiguo 07/07/2011, 06:47
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Sesiones y Registro de una clase

Hola a todos, estoy haciendo una clase para guardar una serie de datos en ejecución, en plan carrito de la compra, pero con otra estructura específica.

Quería preguntaros si veis este código bien para utilizar un patrón singleton y registrar la clase.

Código PHP:
<?php

/**
 * Plantillas
 * 
 * @package 
 * @author antoniopmfree
 * @version 1.0
 */
Zend_Loader::loadClass('Zend_Session_Namespace');
class 
Yimgo_Plantillas_Plantillas {
    
/**
     * Singleton instance
     *
     * @var Yimgo_Plantillas_Plantillas
     */
    
protected static $_instance null;

    
/**
     * Singleton pattern implementation makes "new" unavailable
     *
     * @return void
     */
    
protected function __construct()
    {}

    
/**
     * Singleton pattern implementation makes "clone" unavailable
     *
     * @return void
     */
    
protected function __clone()
    {}

    
/**
     * Returns an instance of Yimgo_Plantillas_Plantillas
     *
     * Singleton pattern implementation
     *
     * @return Yimgo_Plantillas_Plantillas
     */

    
public static function getInstance() {
        if (
Zend_Registry::isRegistered("pSession")) {
            
$sessionData=Zend_Registry::get("pSession");
        } else {
            
$sessionData=new Zend_Session_Namespace("pSession");
            
Zend_Registry::set("pSession",$sessionData);
        }
        
        if (isset(
$sessionData->plan) && ($sessionData->plan!==null)) {
            
$planObject=$sessionData->plan;
        } else {
             if (
null === self::$_instance) {
                
self::$_instance = new self();
             }
            
$planObject=self::$_instance;
            
$sessionData->plan=$planObject;
        }
        return 
$planObject;
    }
}

?>
  #2 (permalink)  
Antiguo 07/07/2011, 07:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Sesiones y Registro de una clase

Para verificar te recomiendo la que sugiere php.net http://php.net/manual/en/language.oo...erns.singleton y/o la de wikipedia http://es.wikipedia.org/wiki/Singleton#PHP5
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/07/2011, 08:13
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
Respuesta: Sesiones y Registro de una clase

También no es necesario que apliques Registry en ese caso, ya que al hacer new Zend_Session_Namespace(), este te devuelve siempre la misma instancia desde $_SESSION, por lo que es redundante que la almacenes en un registry.

Saludos.
  #4 (permalink)  
Antiguo 07/07/2011, 08:17
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Sesiones y Registro de una clase

Hola GatorV,

La verdad es que hago el registry porque sigo un poco la idea de el carrito que hay hecho en bolsadeideas.cl, así que por eso lo utilizo. En esa página lo hace por alguna razón?.

Un saludo.
  #5 (permalink)  
Antiguo 07/07/2011, 08:57
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
Respuesta: Sesiones y Registro de una clase

Pues puede ser que no conozcan como funciona bien el componente de session, pero la idea es esa, por más que lo instancies te va a regresar el mismo namespace interno.

Si ves la documentación hay un segundo parámetro que te impide crear más namespaces, pero todos operan bajo los mismos datos de fondo (la misma entrada en $_SESSION).

Lo que yo haría en tu caso es crear el carrito y luego un manager que se encargue de persistir los datos del carrito, así solo tendrías que hacer un Cart_Manager::getCartInstance(); y este se encargue de tener el carrito / items aparte dentro de una sesión.

Saludos.
  #6 (permalink)  
Antiguo 08/07/2011, 02:18
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Sesiones y Registro de una clase

Hola de Nuevo.

He seguido tu consejo y he hecho dos clases, una manager y otra la principal, llamo a la manager y desde ahí manejo la sesión, sin registry, sólo con el namespace de zend.

Ahora lo veo más claro.

Gracias.

Etiquetas: clase, php, registro, sesiones, zend
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:12.