Foros del Web » Programando para Internet » PHP »

variables tipo clase

Estas en el tema de variables tipo clase en el foro de PHP en Foros del Web. Buenas tardes. Estoy intentando crear una variable que valga para todas las funciones de una determinada clase. He creado mi variable con public y luego ...
  #1 (permalink)  
Antiguo 21/02/2012, 12:23
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
variables tipo clase

Buenas tardes.
Estoy intentando crear una variable que valga para todas las funciones de una determinada clase.
He creado mi variable con public y luego en un constructor la he inicializado, pero eso no funciona.
Copio el código.
Código PHP:
<?php
    
require_once($_SERVER['DOCUMENT_ROOT'].'/es/framework/classes/'.'UIProvider.php');    
    class 
UIModules{
    public 
$UIProvider_Object;
    public function 
__construct(){
         
$this->UIProvider_Object = new UIProvider();     
    }
.
.
.
.
Alguien me puede ayudar?
  #2 (permalink)  
Antiguo 21/02/2012, 12:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: variables tipo clase

¿Y que debería resultar según tu?

Esa parte no la explicas, según el código es correcto, pero no más.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/02/2012, 12:29
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: variables tipo clase

Creo que lo que buscas es el patrón de diseño Singleton
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 21/02/2012, 12:35
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: variables tipo clase

efectivamente, acabo de leer el patrón de diseño Singleton y es lo que necesito.
Supuéstamente, debajo de esa instancia que he copiado, tengo varias funciones. No quiero estar todo el rato creando los objetos, quiero tener 1 objeto para todo el proyecto.
El caso ahora será implantar ese modelo, que veo que es algo complicado.
  #5 (permalink)  
Antiguo 21/02/2012, 12:40
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: variables tipo clase

Cita:
Iniciado por jotaincubus Ver Mensaje
Creo que lo que buscas es el patrón de diseño Singleton
entonces, si yo en mi mismo archivo por ejemplo, pongo:

Código PHP:
<?php
    
require_once ($_SERVER['DOCUMENT_ROOT'].'/es/framework/classes/'.'UIProvider.php');    
class 
UIModules{
    static private 
$UIProvider_Object NULL;

   private function 
__construct() {}

    static public function 
UIProvider_Object() {
       if (
self::$UIProvider_Object== NULL) {
          
self::$UIProvider_Object= new UIModules();
       }
       return 
self::$instancia;
    }

static function 
ComboBox_Login(){ //Charge the combo box
        
$paises simplexml_load_file('../es/framework/documents/Countries_Spanish.xml');  
        
$j=1;
        
$print='<select id="Login_Register_Country" style="width:250; height:35">';
        foreach (
$paises as $pais){ 
            
$print.="<option value=".$j.">".$pais[0]."</option>\n"
            
$j++;
        } 
        
$print.="</select><br>"
        echo 
$print;
    }
con esto ya podría hacer por ejemplo:

Código PHP:
$inst2 UIProvider_Object::ComboBox_Login(); 
?
  #6 (permalink)  
Antiguo 21/02/2012, 12:45
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: variables tipo clase

CUIDADO: Tenes que retornar la instancia del objeto, eso sucede por copiar y pegar sin leer detenidamente y analizar lo que se hace:

ERROR
Código PHP:
Ver original
  1. return self::$instancia;

SOLUCION:
Código PHP:
Ver original
  1. return self::$UIProvider_Object;

Y yo que tu cambiaría el nombre a la función estatica para no obtener errores o caer en error con el nombre de las cosas:

Código PHP:
Ver original
  1. static public function ObtenerInstancia()
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: clase, tipo, variables
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 17:08.