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

metodos/atributos publicos/privados

Estas en el tema de metodos/atributos publicos/privados en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, tengo una duda... se pueden declarar una variable o metodo como publico o privado?? y si se declara como privado hay q usar metodos ...
  #1 (permalink)  
Antiguo 12/06/2006, 08:40
 
Fecha de Ingreso: julio-2004
Mensajes: 61
Antigüedad: 12 años, 10 meses
Puntos: 0
metodos/atributos publicos/privados

Hola, tengo una duda... se pueden declarar una variable o metodo como publico o privado??

y si se declara como privado hay q usar metodos de geter/seter para obtener el valor o modificarlo??

gracias
  #2 (permalink)  
Antiguo 12/06/2006, 08:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 11 años, 1 mes
Puntos: 2122
Si usas PHP5. si puedes solo pon tu variable como privada:

private $var

o

private static $var (si es estatica)

si usas PHP4 no tienes suerte ya que PHP4 no soporta esto :(
  #3 (permalink)  
Antiguo 12/06/2006, 19:23
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 12 años, 1 mes
Puntos: 32
Lo de "getter/setter" es un tema de conceptos.

Si tu colocas atributos privados, estos serán solo "vistos/accedidos/usados" dentro de la propia clase. Si tu quieres que puedan ser modificados desde fuera de la clase, debes crear métodos públicos que internamente "accedan" a los atributos, quedando estos "escondidos".

Por un tema de "principios OO", los atributos deben ser siempre privados (encapsulación) y solo crear métodos que sustituyan las operaciones que eran posibles cuando eran "atributos públicos": un método "setter" para "setear un valor" y/o un método "getter" para "retornar un valor".

Generalmente se usa la nomenclatura (si tu atributo es "nombre"):

Código PHP:
public function setNombre($nuevoValor);

public function 
getNombre(); 
Donde la primera es una función "setter" que necesita un parámetro con el "nuevo valor" que cargará en el atributo (lo que harías más fácil si fuera público) y la segunda, lo obvio (devuelve el valor).

Pero atención, solo deberán existir los "get y set" necesarios, no siempre por cada atributo que disponga tu clase (para eso, deja todos los atributos públicos que es lo mismo ).

Recalco, digo "nomenclatura", puesto que los nombres de los métodos pueden llamarse como quieras, pero si cumplen con ambas definiciones, todo funcionará. El tema es, por convención, se tiende a reconocer así a los métodos que solo sirven para "hacer operaciones básicas como si trabajáramos con atributos públicos", y que además, no deben tener más complejidad que esa (de lo contrario, ya serían métodos comunes y corrientes).

Nota:
sobre este tema, busca cualquier libro sobre Orientación a Objetos (o Java, Python, etc).
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Última edición por enriqueplace; 16/08/2006 a las 21:13
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:42.