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 originalclass valor{
private $estado; //antes tenias $edo
public function setEdo($edo){
$this->estado=$edo;
}
public function getEdo(){
return $this->estado;
}
}
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 originalclass valor{
static $estado;
public function setEdo($edo){
self::$estado = $edo;
}
public function getEdo(){
return self::$estado;
}
}