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

detectar que exista un atributo

Estas en el tema de detectar que exista un atributo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola amigos del foro: Tengo una duda como le hago para detectar si un atributo de una clase existe: por ejemplo: Código PHP:   class  ...
  #1 (permalink)  
Antiguo 13/10/2005, 10:32
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 20 años, 4 meses
Puntos: 1
detectar que exista un atributo

hola amigos del foro:
Tengo una duda como le hago para detectar si un atributo de una clase existe:

por ejemplo:
Código PHP:
 class algo{
  private 
$atributo1;

   function 
__construct(){

  }
  public function 
metodo(){
  
$this->atributo1=5;
  
$this->atributo2=100;// esto no me da error
  //he tratado de esta esta forma pero no me sale:
  
if(!isset($this->atributo2))
   echo 
"error el atributo no es exite";
   

  }
}

$a=new algo();
$a->metodo(); 
PD: uso php5 y esta activado la muestra de errores E-ALL en el PHP.ini
__________________
saludos :adios:

Última edición por shinblood; 13/10/2005 a las 11:05
  #2 (permalink)  
Antiguo 13/10/2005, 11:04
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 20 años, 4 meses
Puntos: 1
bueno ya encontre una solucion pero no me parece optima
Código PHP:
class algo{
  private 
$atributo1=""//me he visto obligado a asiganarle una valor por defecto para que funcione, si no tampoco me va a encontrar a atributo1

   
function __construct(){

  }
  public function 
metodo(){
    
    if(!isset(
$this->atributo1))
     echo 
"error el atributo1 no es exite";
   else
      
$this->atributo1=5;

   if(!isset(
$this->atributo2))
      echo 
"error el atributo2 no es exite";
   else
      
$this->atributo2=1000;
  }
 
}

$a=new algo();
$a->metodo(); 
para mi esta es una forma un tanto brusca de solucionar mi problema no se si habra otra
__________________
saludos :adios:
  #3 (permalink)  
Antiguo 13/10/2005, 15:12
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
método de atributo

Bueno puedes utilizar ReflectionClass que implementa Reflector. PHP5 ya incorpora refractoring, hecha una mirada en el manual de referencia.

Un ejemplo sería:

Código PHP:
 
$class 
= new ReflectionClass('tuNombreDeClase');
var_dump($class->getMethods()); 
aquí getMethods() retorna un array(); lo demás lo dejo a tu hacer.
Espero que te haya servido de ayuda.

Por cierto eso de declarar atributos dentro de los metodos es un poco ejem... digamos sucio y ofusco y te llevará a errores no lo deverías hacer. A mi entender lo mucho q puedes llegar a hacer es comprobar el valor de la variable.

Última edición por Casuis; 13/10/2005 a las 15:17
  #4 (permalink)  
Antiguo 13/10/2005, 15:51
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 20 años, 4 meses
Puntos: 1
gracias por la repuesta Casuis

Ya revise la doc ReflectionClass y hay un metodo que me serviria para lo que pretendo hacer " public bool hasProperty(string name)" lamentablemente esta disponible para PHP 5.1.0 que esta RC1 .
Asi que ni modo me las tendre que arreglar con "public ReflectionProperty getProperty(string name)".
__________________
saludos :adios:
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 05:18.