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