Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/05/2004, 08:25
Avatar de Webstudio
Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Efectivamente, en PHP es posible acceder a los atributos de un objeto directamente, rompiendo el encapsulamiento. Lo cual no creo que esté mal del todo, pero para ciertas cosas, en las que es mejor no saber de que manera guarda un dato un objeto, no es nada recomendable.
Yo personalmente creo métodos con el mismo nombre del atributo, que dependiendo de la cantidad de parámetros con la que son invocados, guarda el dato en el atributo o lo devuelve Por ejemplo, lo que suelo hacer bastante, por parecerme similar a lo que hacia en SmallTalk, es lo siguiente:

Código PHP:
<?php
class Objeto
{
    var 
$nombre '';

    function 
nombre()
    {
        switch(
func_num_args())
        {
            case 
1:
                
$this->nombre func_get_arg(0);
            case 
0:
                return 
$this->nombre;
        }
    }
}

$obj = new Objeto();
$obj->nombre('Pablo');
echo 
'Este Objeto se llama '.$obj->nombre();
?>
De esta manera, conservo el encapsulamiento, porque en el Setter y el Getter (ambos son el mismo método ) puedo manipular los datos antes de entregarlos a quien los solicita.

La únca contra que le veo a este método es que sugiere mucho código, aunque yo en el PHPEdit tengo un Template que con solo escribir unas letras, me hace todo el método personalizado.

Igualmente, sería interesante ver de implementar un objeto cuyo único propósito sea proveer una Api inteligente para el guardado de opciones.

saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com