Lo primero que haremos será declarar la clase con sus atributos en PHP. La operación es muy similar a la declaración de un struct en C o de otro elemento similar en otro lenguaje.
Comenzaremos definiendo los atributos. Delante de cada uno indicamos el tipo de atributo del que se trata (público, privado o protegido). Si no indicamos nada, el atributo será considerado público (además, es posible que nos lance algún tipo de advertencia el intérprete de PHP).
¿Qué es eso de público, privado y protegido?
- Público (public): Se puede acceder desde fuera de la clase.
- Privado (private): Sólo se puede acceder desde dentro de la clase.
- Protegido (protected): Se puede accede desde dentro de la clase y desde clases herederas.
Como éste es un artículo de introducción a la programación orientada a objetos con PHP no voy a centrarme demasiado en definir estos términos, ni otros relacionados como la herencia o el polimorfismo.
Pasemos a implementar ya la creación de nuestra clase usuario siguiendo el diseño propuesto en el punto anterior.
class Usuario{
private $id;
private $nombre;
private $apellidos;
private $codigoPostal;
}
Pero si son privados, ¿cómo accedemos a los atributos? La solución es crear métodos, funciones propias de la clase, pública que accedan al atributo.
¿Qué ventajas tenemos con esta metodología? Aunque en este caso el acceso va a ser directo, en casos donde haya que realizar una comprobación, nos aseguramos que los objetos de la clase siempre tienen datos válidos, además de ocultar la implementación interna de la clase, creando una caja negra mucho más útil en grandes proyectos. Por ejemplo, un método “setNIF” en el que antes de igualar el atributo al valor enviado por el usuario, se compruebe si la letra del NIF es válida, y en caso de no serlo, no se almacene el nuevo valor.
Veamos la implementación de esos métodos dentro de la clase.
function getId(){
return $this->id;
}
function setId($id){
$this->id = $id;
}
function getNombre(){
return $this->nombre;
}
function setNombre($nombre){
$this->nombre = $nombre;
}
function getApellidos(){
return $this->apellidos;
}
function setApellidos($apellidos){
$this->apellidos = $apellidos;
}
function getCodigoPostal(){
return $this->codigoPostal;
}
function setCodigoPostal($codigoPostal){
$this->codigoPostal = $codigoPostal;
} read more