Autor Tema: Ejemplo clase sencilla en php y método para recuperar propiedades getter  (Leído 3620 veces)

Camila Nova

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola que tal
les cuento que me toco construir un codigo que me permita grabar un nuevo valor para 2 objetos distintos con distintas propiedades, el problema que tengo es que al consultar, me devuelve la primera instancia repetida; o sea, como que la segunda no es consultada pero si seteada, el codigo en cuestion es este
Código: [Seleccionar]
<?php 
  
class Perro 

  public 
$prop1 "Soy un collie!!";
  
  public 
$prop2 "Cachupín"
  
  
  public function 
setProperty($newval
  
  
  { 
      
$this->prop1 $newval
      
$this->prop2 $newval;
  } 
  
  public function 
getProperty() 
  { 
      return 
$this->prop1 "<br />";
      return 
$this->prop2 "<br />"
  } 

  
 
$obj = new Perro
$obj2 = new Perro
  
echo 
$obj->getProperty(); 
echo 
$obj2->getProperty(); 
  
$obj->setProperty("Ahora soy un Terrier"); 
$obj2->setProperty("Soy parte de la segunda instancia!"); 
  
echo 
$obj->getProperty(); 
echo 
$obj2->getProperty(); 
  
?>

y lo que me devuelve es:

Soy un collie!!
Soy un collie!!
Ahora soy un Terrier
Soy parte de la segunda instancia!

cuando lo que me debiese devolver seria

Soy un collie!!
Cachupín
Ahora soy un Terrier
Soy parte de la segunda instancia!

Ques estoy haciendo mal?
Cualquier ayuda es bienvenida
de antemano agradezco a cualquiera que me lea
saludos  :)

« Última modificación: 07 de Noviembre 2015, 13:33 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejemplo clase sencilla en php y método para recuperar propiedades getter
« Respuesta #1 en: 07 de Noviembre 2015, 13:33 »
Hola Camila Nova: una función no puede tener dos return. La función se ejecuta hasta llegar a un return, y en ese momento se devuelve el control al punto desde donde fue llamada.

El problema está aquí:

  public function getProperties()   {
      return $this->prop1 . "<br />";
      return $this->prop2 . "<br />";
  }

Para devolver las dos propiedades tienes que hacerlo en un solo return:

  public function getProperties()   {
      return $this->prop1 . "<br />". $this->prop2 . "<br />";
  }

El código podría quedar así:

Código: [Seleccionar]
<meta charset = "utf-8" />
<?php 
  
class Perro 
  public 
$prop1 "Soy un collie!!";
  public 
$prop2 "Cachupín"
  
  public function 
setProperties($newval1$newval2) { 
  
      
$this->prop1 $newval1
  if (
$newval2) {$this->prop2 $newval2;}
  } 
  
  public function 
getProperties()   { 
      return 
$this->prop1 "<br />"$this->prop2 "<br />"
  } 

  
 
$obj = new Perro
$obj2 = new Perro
  
echo 
$obj->getProperties(); 
echo 
$obj2->getProperties(); 
  
$obj->setProperties("Ahora soy un Terrier"""); 
$obj2->setProperties("Soy parte de la segunda instancia!"""); 
  
echo 
'<br/>Propiedades del objeto 1: '.$obj->getProperties(); 
echo 
'<br/>Propiedades del objeto 2: '.$obj2->getProperties(); 
  
?>


En realidad en general en programación orientada a objetos cada propiedad tiene un método distinto para recuperarse, es decir, tendrías un getProp1 y un getProp2.

Saludos.

Camila Nova

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Re:Ejemplo clase sencilla en php y método para recuperar propiedades getter
« Respuesta #2 en: 07 de Noviembre 2015, 16:06 »
Gracias por tu respuesta Alex, había llegado a una solución similar, pero al igual que el codigo que me presentas la instancia 2 se sigue repitiendo al consultar el codigo al final, me explico

la salida debiera ser:

Soy un collie!!
Cachupín
Ahora soy un Terrier
Soy parte de la segunda instancia!

y me devuelve:

Soy un collie!!
Cachupín
Soy un collie!!
Cachupín
Ahora soy un Terrier
Cachupín
Soy parte de la segunda instancia!
Cachupín

esto a que se debera?
« Última modificación: 07 de Noviembre 2015, 21:29 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejemplo clase sencilla en php y método para recuperar propiedades getter
« Respuesta #3 en: 07 de Noviembre 2015, 21:33 »
Hola tienes que fijarte en que tienes dos objetos y cada objeto tiene dos propiedades (atributos).

Inicialmente las propieddes de un objeto creado son "Soy un collie" y "Cachupin".

Si quieres cambiar las dos propiedades en un objeto tienes que escribir:

$obj->setProperties("Ahora soy un Terrier", "Soy parte de la segunda propiedad");

Si quieres aprender los conceptos de la programación orientada a objetos te recomiendo este curso https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".