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

Devolver $this en los setters

Estas en el tema de Devolver $this en los setters en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, Me gustaría conocer vuestras opiniones de devolver la referencia al propio objeto en un método setter. Código PHP: class  Clase {     private  $a ; ...
  #1 (permalink)  
Antiguo 17/05/2013, 06:59
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 4 meses
Puntos: 32
Devolver $this en los setters

Buenas,

Me gustaría conocer vuestras opiniones de devolver la referencia al propio objeto en un método setter.

Código PHP:

class Clase
{
    private 
$a;

    private 
$b;
    
    public function 
setA($a)
    {
          
$this->$a;
          return 
$this;
    }

    public function 
setB($b)
    {
          
$this->$b;
          return 
$this;
    }

Yo lo veo como una buena práctica para poder concatenar métodos, pero lo que me guistaría si puede conllevar problemas.

Las pruebas que he hecho yo de rendimiento me da tiempos y memoria casi iguales.

Gracias.
  #2 (permalink)  
Antiguo 17/05/2013, 09:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Devolver $this en los setters

Pues ¿que problemas piensas que te puede traer?

Recuerda que desde PHP5+ todos los objetos son referencias, es por eso que devolver $this o no no tiene ningún impacto, porque solo estas regresando una referencia y el beneficio que te da es ese, poder encadenar los métodos.

Saludos.
  #3 (permalink)  
Antiguo 17/05/2013, 15:43
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 4 meses
Puntos: 32
Respuesta: Devolver $this en los setters

Es que sólo veo ventajas. Y me parece raro que no encuentre desventajas. Por eso preguntaba.
  #4 (permalink)  
Antiguo 17/05/2013, 17:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Devolver $this en los setters

Pues es que no las hay, ya que es un simple setter.

Saludos.
  #5 (permalink)  
Antiguo 11/06/2013, 01:25
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Devolver $this en los setters

Me cuelgo del tema.....

un setter-getter en la misma funcion......... ?

Código PHP:
// ejemplo para setear o leer el lenguaje:

public function lang($lang=null
    { 
          if (!
is_null($lang)){
             
$this->lang $lang
             return 
$this
         }
         return 
$this->lang;
    } 
Muy desprolijo ?
__________________
Salu2!
  #6 (permalink)  
Antiguo 11/06/2013, 09:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Devolver $this en los setters

Pues no es lo acostumbrado, los getter/setter ya es algo establecido, aunque sí tú lo haces así es algo muy personal, solo piensa que es una desviación al estándar
  #7 (permalink)  
Antiguo 15/06/2013, 14:44
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Devolver $this en los setters

...Siempre que, si en el setter hay un fallo, se lance una excepción...o se establezca un flag de error que se tiene que comprobar tras cada invocación al setter..
La diferencia entre la existencia de setters, y simplemente establecer la variable miembro como "publica", es el chequeo de errores/transformación de datos.Si se devuelve $this, el chequeo de errores no se podrá hacer vía valor retornado por la función.

Por cierto, el setter-getter es muy usado en jquery.
  #8 (permalink)  
Antiguo 24/06/2013, 12:30
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 73
Antigüedad: 10 años, 10 meses
Puntos: 27
Respuesta: Devolver $this en los setters

Cita:
Iniciado por Italico76 Ver Mensaje
Me cuelgo del tema.....

un setter-getter en la misma funcion......... ?

Código PHP:
// ejemplo para setear o leer el lenguaje:

public function lang($lang=null
    { 
          if (!
is_null($lang)){
             
$this->lang $lang
             return 
$this
         }
         return 
$this->lang;
    } 
Muy desprolijo ?
¿ Y cómo haces para poner lang a nulo ?
  #9 (permalink)  
Antiguo 29/06/2013, 14:56
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Devolver $this en los setters

Cita:
Iniciado por eternoaprendiz Ver Mensaje
¿ Y cómo haces para poner lang a nulo ?
Cual seria el objetivo de devolver la variable a NULL ? recuerda que sino la seteas, estará en NULL si la declaras asi o sino al llamar al metodo sin parametros se asignará "NULL" (pasará de undefined a null)

En el ejemplo que puse seria el idioma de la web, pero en general no le veo el sentido, si vas a cambiar todo, crea otro objeto (en caso que sea instanciable)... si quieres dejar el valor por default, sabras cual es porque estara documentado...

No se que opinan los que saben
__________________
Salu2!
  #10 (permalink)  
Antiguo 29/06/2013, 20:57
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: Devolver $this en los setters

Se llama interfaz fluida.

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #11 (permalink)  
Antiguo 30/06/2013, 00:20
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 137
Respuesta: Devolver $this en los setters

yo si he usado poner setear una propieadad a nulo, no veo conveniente hacer un setter y getter en un mismo método
__________________
>> abimaelmartell.com

Etiquetas: devolver
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 16:58.