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

Clases en PHP5: Crear Variable Pública en tiempo de Ejecución

Estas en el tema de Clases en PHP5: Crear Variable Pública en tiempo de Ejecución en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Holas a todos! Les contaré que en PHP 4 he escrito algunas muy pequeñas y simples clases para diversos usos que han funcionado bien. Pero ...
  #1 (permalink)  
Antiguo 14/01/2008, 11:12
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Clases en PHP5: Crear Variable Pública en tiempo de Ejecución

Holas a todos!

Les contaré que en PHP 4 he escrito algunas muy pequeñas y simples clases para diversos usos que han funcionado bien. Pero ahora que he instalado PHP 5, sabiendo que la programación cambió, he leído las bases en el sitio oficial y experimentado yo misma la nueva forma de declarar y etc.

Ahora bien, mi pregunta es esta: ¿Se pueden crear variables públicas en tiempo de ejecución dentro de la clase?

Lo pregunto porque usando PHP 4 sí podía. Esto es, como en PHP 4 no se especificaba el rango de las variables, todas eran públicas dentro de la clase y fuera de ella. Esto supongo hacía que se pudieran crear nuevas variables para la clase desde dentro de la misma en tiempo de ejecución sin problemas.

Pero cuando intento hacerlo en PHP 5 me tira error: Fatal error: Cannot access empty property in (miclase.php) on line (linea)

La parte donde se cae es cuando creo las variables dentro del constructor:
Código PHP:
class UnaClase
{
  
// Una variable ya creada:
  
public $objeto;

  
// El constructor:
  
public function __construct ($nuevo)
  {
    
// Variable creada recibe valor:
    
$this->objeto $nuevo;

    
// Intento crear Nueva Variable del objeto al construirlo:
    
$this->atributonuevo "";  // Aquí se cae.
  
}

Mi pregunta no es si es correcto crear variables nuevas en ejecución, sólo quiero saber si se puede o nop, ya que en PHP 4 me funcionaba bien...

Intenté algo como esto, sabiendo que sería como medio ilógico, y claro no funcionó, pero esa es la pregunta precisamente:

Código PHP:
class UnaClase
{
  
// Una variable ya creada:
  
public $objeto;

  
// El constructor:
  
public function __construct ($nuevo)
  {
    
// Variable creada recibe valor:
    
$this->objeto $nuevo;

    
// Intento crear Nueva Variable del objeto al construirlo:
    
public $this->atributonuevo "";  // Aquí se cae peor! Jajaja...
  
}

¿Qué opinan?

Muchas gracias de antemano, y saludos!!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #2 (permalink)  
Antiguo 14/01/2008, 11:47
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: Clases en PHP5: Crear Variable Pública en tiempo de Ejecución

Porque no haces un "registro" o un "almacén" de variables publicas? Algo así:
Código PHP:
class Algo {
       private 
$stack = array();

       public function 
__construct() {
                  
// Vamos a poner una var "publica":
                  
$this->stack['test'] = "algo";
       }

       public function 
__set$name$value ) {
                 
$this->stack[$name] = $value;
       }

       public function 
__get$name ) {
                 return 
$this->stack[$name];
       }
}

$o = new Algo();
echo 
$o->test;
$o->prueba "hola";
echo 
$o->prueba
Saludos.
  #3 (permalink)  
Antiguo 14/01/2008, 12:29
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Clases en PHP5: Crear Variable Pública en tiempo de Ejecución

Gracias, GatorV ^^

Pues verás, eso es usar un arreglo, donde el nuevo atributo estaría dado en la Key del arreglo, cierto? Ya lo había hecho así, y sí funciona, está bien, pero yo quería el gustito de que quedaran como nombres, directo, no en un arreglo ^^...

Código PHP:
// Así queda cuando usamos arreglos para los atributos:
$objeto->propiedares["color"] = "#CCDD00";

// Pero yo quería quedara así:
$objeto->color "CCDD00"
En PHP 4 me funcionó, pero en 5 nop, por eso preguntaba si se podría... u_ù

Gracias de todos modos :)
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #4 (permalink)  
Antiguo 14/01/2008, 12:45
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: Clases en PHP5: Crear Variable Pública en tiempo de Ejecución

Fíjate mas abajo, si te das cuenta a la hora de leer externamente las propiedades puedes usar esa notación ya que estas implementando los métodos mágicos.

Saludos.
  #5 (permalink)  
Antiguo 14/01/2008, 12:58
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Clases en PHP5: Crear Variable Pública en tiempo de Ejecución

Ohhh!! Tienes razón, GatorV O_O!!! Entonces sí se podía, y justo con "métodos mágicos", Jajaja Qué irónico ^o^
Gracias otra vez!! Ya lo pruebo!! :P
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
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 23:08.