Ver Mensaje Individual
  #23 (permalink)  
Antiguo 24/01/2009, 09:32
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Duda: Como inicializar propiedades públicas (filtradas) de un objeto

Cita:
Iniciado por Lord Kazuky Ver Mensaje
Enrique, cuando dices:

"No uses/evita (conceptualmente) los getter/setter, usa métodos simples (si los set/get son parches, no tienes por qué estar obligado a usarlos)."

¿Es por cuestión de diseño? a que te refieres con 'conceptualmente'?

Segun el ejemplo que pones 'asignarTemperatura' y 'tieneFiebre' son nombres que dicen más de lo que hacen que solo 'get'. ¿A eso te refieres?
Estimado Lord, pensé que todo el hilo de la discusión había sido suficientemente claro

Un getter/setter no es más que una "convención de nombres y uso" para un método, por ejemplo:
  • si pides datos, get y nombre del atributo que entregas datos, ej: getNombre()
  • si es para asignar datos, inica el nombre con set y el atributo, ej: setNombre($valor);
Y conceptualmente, es simplemente para suplir que no hagas atributos públicos pero que quieres/necesitas de alguna forma aplicar una "excepción" (evita que todo lo sea)... si lo razonas verás que si aplicas set/get siempre a tus atributos, es lo mismo que si fueran públicos... y esa no es la idea, los objetos (en su uso tradicional) no deben tener atributos públicos.

Es conceptual, tu perfectamente puedes tener métodos que se llamen "getAlgo" y no sean getter/setter, simplemente porque te queda más cómodo que decir "obtenerValorDeAlgo"; nadie dice que no puedes usar en otros ámbitos la preposición "get"... por eso también la discusión que un método getter/setter tiene que ser simple, como si fuera un atributo público... si hacemos métodos quilométricos, yo diría que se pierde la esencia, usa entonces métodos comunes y no digas que son getter/setter.

Lo "conceptual" es que deberías evitar acceder directamente a datos de un atributo desde el exterior ("principio de ocultamiento") y trabajar con métodos comunes que retornen información procesada.

Ese es el concepto, de ahí que lo puedas aplicar siempre y de forma pura, es lo más difícil.

Por eso mi sugerencia en ese orden, trata de evitar los getter/setter, pero si no puedes, usa ese orden.

¿Queda más claro ahora?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com