Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/03/2015, 21:24
darioPHP
 
Fecha de Ingreso: marzo-2015
Mensajes: 15
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Problema al obtener valor de una clase

a ver, en primer lugar, mandas por href una variable "num" y otra "edo", pero en tu php tenes un $_GET["red"];

despues haces dos instancias de la clase valor, recorda que por cada instancia nueva que hagas de una clase se genera un nuevo espacio de memoria de las propiedades para el nuevo objeto creado.

en "redireccionar.php" haces una instacia de clase "valor" en tu variable $obj, y luego guardas la variable edo con el metodo $obj->setEdo().

en "estados.php" haces otra instancia de la clase "valor" a una variable $obj. El problema recae que al hacer esta nueva instancia la propiedad "private $edo" se crea en un nuevo espacio de memoria para ese nuevo objeto sin ningun valor.

el setEdo() que hiciste en el archivo "redireccionar.php" guarda el valor en el objeto de aquel archivo, no en el objeto que instanciaste en "estados.php"

mostra cuando y donde haces los includes de los archivos php.


ME acabo de dar cuenta que tambien la clase valor esta mal hecha:
tiene como nombre de propieda "$edo", pero luego haces "$this->estado". deberias corregirla de esta manera.

Código PHP:
Ver original
  1. class valor{
  2.         private $estado; //antes tenias $edo
  3.        
  4.         public function setEdo($edo){
  5.             $this->estado=$edo;
  6.         }
  7.         public function getEdo(){
  8.             return $this->estado;
  9.     }
  10. }

La solucion es NO hacer otro $obj = new valor(); en "estados.php"; asegurate de que en "redireccionar.php" este oncluido "estados.php" o viceversa. Pero si la cosa se complica muchoo hay otra solucion POCO RECOMENDABLE, puede que paresca milagrosa pero no es el modo correcto, es guardar como "static" tu propiedad "$estado". Esto permitira que todas las instancias de la clase compartan la misma propiedad:

Código PHP:
Ver original
  1. class valor{
  2.     static $estado;
  3.    
  4.     public function setEdo($edo){
  5.         self::$estado = $edo;
  6.     }
  7.     public function getEdo(){
  8.         return self::$estado;
  9.     }
  10. }

Última edición por darioPHP; 06/03/2015 a las 21:42