Foros del Web » Programando para Internet » PHP »

PHP OO Atributos en POO

Estas en el tema de Atributos en POO en el foro de PHP en Foros del Web. Muy buenas, qué tal? Tengo una duda con los atributos en POO Por ejemplo, si tengo este código: Código PHP: class  Menu  {   private  $enlaces ...
  #1 (permalink)  
Antiguo 29/03/2012, 02:10
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Atributos en POO

Muy buenas, qué tal?

Tengo una duda con los atributos en POO

Por ejemplo, si tengo este código:

Código PHP:
class Menu {
  private 
$enlaces=array();
  private 
$titulos=array();
  public function 
cargarOpcion($en,$tit)
  {
    
$this->enlaces[]=$en;
    
$this->titulos[]=$tit;
  }
  public function 
mostrar()
  {
    for(
$f=0;$f<count($this->enlaces);$f++)
    {
      echo 
'<a href="'.$this->enlaces[$f].'">'.$this->titulos[$f].'</a>';
      echo 
"-";
    }
  }

Es obligatorio poner los atributos en la clase y luego referenciarlos en el método ?

Porque, si lo pongo así, en principio también funcionaría:

Código PHP:
class Menu {
  public function 
cargarOpcion($en,$tit)
  {
    
$this->enlaces[]=$en;
    
$this->titulos[]=$tit;
  }
  public function 
mostrar()
  {
    for(
$f=0;$f<count($this->enlaces);$f++)
    {
      echo 
'<a href="'.$this->enlaces[$f].'">'.$this->titulos[$f].'</a>';
      echo 
"-";
    }
  }

Lo que entiendo es que si no los declaro en la clase solo los podría usar para dicho método, verdad?

Un saludo y gracias :)
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #2 (permalink)  
Antiguo 29/03/2012, 02:34
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 16 años, 5 meses
Puntos: 53
Exclamación Respuesta: Atributos en POO

Realmente por definición (en PHP OO) $this haría referencia al objeto sobre el que invocamos el método o bien llamamos una propiedad.

Para tu caso estás llamando una propiedad enlaces que no está definida en la clase Menu, lo cual te indicaría el clásico Undefined property. No asocies la variable $this a la manipulación de variables en el entorno de la función, sino al de la clase.

El caso correcto se hace evidente en el primer ejemplo.
__________________
Programar dejó de ser una profesión acusada en la oscuridad y disfrutada fríamente... para convertirse en un arte.
  #3 (permalink)  
Antiguo 29/03/2012, 02:54
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Respuesta: Atributos en POO

Cita:
Iniciado por JairLizcano Ver Mensaje
Realmente por definición (en PHP OO) $this haría referencia al objeto sobre el que invocamos el método o bien llamamos una propiedad.

Para tu caso estás llamando una propiedad enlaces que no está definida en la clase Menu, lo cual te indicaría el clásico Undefined property. No asocies la variable $this a la manipulación de variables en el entorno de la función, sino al de la clase.

El caso correcto se hace evidente en el primer ejemplo.
Muchas gracias por la aclaración :) !!!

Un saludo
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?

Etiquetas: atributos, poo
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 21:40.