Páginas

jueves, 19 de mayo de 2011

Conociendo las clases POO setter y getter

En el día de hoy vamos a hablar un poco de un tema que aunque básico es importante al momento de crear nuestras clases y estos son los "setter y los geter".

Para dar una pequeña introducción al tema vamos a explicar que son cada uno de ellos, comenzando por el setter. Un setter es un método de una clase que sirve para asignarle un valor a un atributo de una clase.

Un poco de repaso de POO, un atributo son las características de un objeto, estos por buena práctica deben de ser de acceso privado, de tal manera que solo puedan ser modificados por la misma clase de la que son características y no por otra.

Continuando con lo que se refiere al metodo setter, cuando creamos este tipo de método estamos dando acceso a otros objetos o lugar de nuestra aplicación a indicar el valor de un atributo de nuestra clase, un ejemplo de este.

class MiClase
{
    private $atrbibutoClase;
    private $otroAtributo;
    public function setAtributoClase($atrbibutoClase)
    {
        $this->atrbibutoClase = $atrbibutoClase;
    }   
    public function setOtroAtributo($otroAtributo)
    {
        $this->otroAtributo = $otroAtributo;
    }   
}

Como posemos ver son metodos que asignan valor a cada atributo de nuestra clase
MiClase, de tal manera que podamos trabajar con los datos de esta.

Hasta aca esta sencillo nuestro trabajo con los setter, pero que con los tipos de datos que estos pueden recibir??

En Java por ejemplo este tipo de métodos se les indica el tipo de valor que reciben en el parámetro ya que java es exigente en cuanto a los tipos de datos que se le asignan a las variables y atributos, pero que con nuestro amado PHP.

Hasta el día de hoy nunca había tomado en cuenta la validación de tipo de dato que se da a los setter ya que tengo una clase con la que valido los datos al momento de estar trabajand, pero en el día de hoy foreando un poco en este tema en específico entendí que se puede o mejor dicho debe hacer la validación en nuestros métodos setter. Entonces como quedarian nuestros setter con validaciones??

Suponiendo que uno de los datos sea de tipo numerico quedaria de la siguiente manera.

<?php 
class MiClase
{
    private $atrbibutoClase;
    private $otroAtributo;
    public function setAtributoClase($atrbibutoClase)
    {
        if(is_numeric($atrbibutoClase)){
           $this->atrbibutoClase = $atrbibutoClase;
        }
        else{
             throw new Exception("EL dato debe de ser numerico");
        }
    }       
}
$class = new MiClase();
$class->setAtributoClase("hola");
?>

como vemos hacemos una validacion y sino lanzamos una excepcion indicando que el tipo de dato no es el correcto para este atributo de nuestra clase.

Como vemos aunque son métodos sencillos los setter en PHP tienen que tener un poco de lógica para hacer la validación de tipo de datos del mismo.

Ahora hablemos un poco de los getter, los getter son los métodos que retornan o muestran el valor de un atributo de nuestra clase. Entonces como quedaria nuestro getter??

public function getAtrbibutoClase()
{
    return $this->atrbibutoClase;
}
De esta manera al momento de tener una instancia de nuestro objeto MiClase solo con llamar a este método obtendriamos el valor de el atributo especificado.

Estos métodos de los que hablamos hoy son valiosamente útiles al momento de declarar nuestras clases ya que nos dan acceso a los atríbutos de la misma.

Espero que esta entrada sea de su agrado y que halla explicado bien la misma, cualquier sugerencia o corrección me la hacen saber, saludos.