Tema: Para el foro
Ver Mensaje Individual
  #16 (permalink)  
Antiguo 24/12/2004, 12:49
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 3 meses
Puntos: 41
ejem..ejem... volviendo al tema y para no dejar "colgado" a lado2mx:
Normalmente definirás accesores (cuando sea necesario) para obtener el valor de algún atributo de la clase, o para asignar/modificar su valor.
Código PHP:
class Ejemplo{
    
// Supongamos que tiene un atributo.
    // Lo declaramos:
    
var atributo1;
    
    
// Ahora, si queremos definir accesores para ese atributo,
    // deberemos definir dos métodos, uno para leer y otro para
    // escribir ese atributo.
    
    // Para leer el valor que tiene el atributo creamos un método
    // Este método no necesita parámetros
    
function obtenerAtributo1(){
        return 
this->atributo1;
    }
    
    
// Para escribir/modificar el valor del atributo1, creamos un método.
    // Este método necesitará que le pasemos como parámetro el valor que
    // debe tomar el atributo.
    
function asignarAtributo1($nuevoValor){
        
this->atributo1 $nuevoValor;
    }
}

// Para utilizar la clase:
$ejemplito = new Ejemplo();
// Le damnos un valor al atributo1
$ejemplito->asignarAtributo1("un valor para el atributo1");
// Imprimimos el valor del atributo:
echo $ejemplito->obtenerAtributo1();// imprimirá "un valor para..." 
En PHP4 todos lo métodos y atributos son públicos... por eso no es necesario definir estos accesores... pues podrías haber hecho directamente:
Código PHP:
$ejemplito = new Ejemplo();
// Le damnos un valor al atributo1
$ejemplito->atributo1 ="un valor para el atributo1";
// Imprimimos el valor del atributo:
echo $ejemplito->atributo1;// imprimirá "un valor para..." 
Pero si entiendes temas de encapsulamiento y de miembros privados... verás que es útil y a veces necesario definir esos accesores. PHP5 ya soporta definición de miembros privados.
.
.
Ahora... el ejemplo que te pusieron de ese método hace exactamente lo mismo que te he explicado... sólo que en lugar de utilizar dos métodos (uno para leer y otro para escribir) utiliza uno sólo que leerá o escribirá según le pases parámetros o no.

Código PHP:
function Atributo1(){
    switch (
func_num_args()){// según la cantidad de parámetros que se hayan pasado
        
case 1:
            
// si se pasó un parámetro se asigna valor (escribir)
            
$this->atributo1 func_get_arg(0);
        case 
0:
            
// Si no se pasó ningún parámetro se lee el valor.
            
return $this->atributo;
    }
}
// Para utilizar la clase:
$ejemplito = new Ejemplo();
// Le damnos un valor al atributo1 (método con parámetros)
$ejemplito->Atributo1("un valor para el atributo1");
// Imprimimos el valor del atributo: (método sin parámetros)
echo $ejemplito->Atributo1();// imprimirá "un valor para..." 
Espero que se haya entendido...

Saludos