Declaración de atributos, constructores, propiedades (get & set) y métodos de una clase en PHP.

Publicado por el 29/08/2016. Categoría: php, Programación Web

Hola a tod@s! Primero que nada, quería agradecer a todos los seguidores por seguirme y espero que les guste esta nueva entrega en la que explicaré como declarar los elementos básicos para construir una clase en php.

En el post anterior, vimos cómo se declaraba una clase y como se instanciaba un objeto de la misma. Ahora te mostraré cómo declarar atributos, propiedades, constructor y métodos de una clase.

Seguiremos con el ejemplo del post anterior para no perder el hilo. A mi personalmente me gusta comentar cada sección de elemento de clase que voy a utilizar, por ejemplo; antes de declarar los atributos comento una línea con “//Atributos” y así con las siguientes, esto lo hago para tener un código más entendible, o al menos para mí es entendible, jeje! si no es de tu agrado puedes omitir este paso, contra gustos no hay nada escrito! 🙂

Como primera instancia declararemos los atributos de la clase Persona si observas están declarados como privados y esto se debe al principio de encapsulamiento de la orientación a objetos (puedes ver más acerca de este principio en el post Conceptos básicos y pilares de la Programación Orientada a Objetos (POO).


//Atributos

private $nombre;

private $apellido;

private $edad;

private $sexo;

Luego declaramos el constructor, que según Wikipedia, “un constructor es una subrutina cuya misión es inicializar un objeto de una clase. En el constructor se asignan los valores iniciales del nuevo objeto”, yo generalmente declaro los constructores con los parámetros correspondientes a la clase como en el ejemplo pero también se puede declarar sin parámetros de la siguiente forma; “public Persona() {}”.


 //Constructor
 function __construct() {
 $this->nombre = "";
 $this->apellido = "";
 $this->edad = "";
 $this->sexo = 0;
 }

Ahora si estamos listos para declarar las propiedades, las declaramos como públicas ya que con ellas podremos tener un acceso seguro y controlado a los atributos. La propiedad “set” es la encargada de establecer el valor del atributo y la propiedad “get” se encarga de obtener el valor del atributo en cuestión. Usamos la palabra “$this” porque estamos haciendo referencia al objeto (instancia) actual.

Una aclaración importante, en los lenguajes orientados a objetos existe la “sobrecarga” u “overloading” en inglés, en el manual oficial de PHP se explica detalladamente que “La sobrecarga en PHP ofrece los medios para “crear” dinámicamente propiedades y métodos. Estas entidades dinámicas se procesan por los métodos mágicos que se pueden establecer en una clase para diversas acciones”, con esto podemos usar la “sobrecarga de propiedades” que PHP nos ofrece, es decir, cuando tenemos muchos atributos en nuestra clase, declarar cada get y set por atributo puede ser tedioso, pero usando esto podemos ahorrar mucho código y sobre todo valioso tiempo. Si deseas ver más acerca de esto puedes verlo en el manual de PHP en el siguiente link http://es.php.net/manual/es/language.oop5.overloading.php.


//Propiedades
 //Nombre
 public function getNombre() 
 {
 return $this->nombre;
 }
 
 public function setNombre($nombre)
 {
 $this->nombre = $nombre;
 }

 //Apellido
 public function getApellido() 
 {
 return $this->apellido;
 }
 
 public function setApellido($apellido)
 {
 $this->apellido = $apellido;
 }

 //Edad
 public function getEdad() 
 {
 return $this->edad;
 }
 
 public function setEdad($edad)
 {
 $this->edad = $edad;
 }

 //Sexo
 public function getSexo() 
 {
 return $this->sexo;
 }
 
 public function setSexo($sexo)
 {
 $this->sexo = $sexo;
 }

Por último, tenemos los métodos, en este caso el método, que son las acciones que realizará nuestra clase.


 //Métodos
	public function soyUnMetodo()
	{
 		echo "Soy un método de la clase: " . __CLASS__ . ".<br /> Me llamo: <b>" . $this->getNombre() . " " . $this->getApellido() . "</b> y tengo <b>" . $this->getEdad() . "</b> años. <br /> Género: <b>" . $this->getSexo() . "</b>";

	}

Entonces nuestra clase completa nos quedaría:


class Persona
{
    //Atributos
    private $nombre;
    private $apellido;
    private $edad;
    private $sexo;

    //Constructor
    function __construct() {
      	$this->nombre = "";
		$this->apellido = "";
		$this->edad = "";
		$this->sexo = 0;
    }

    //Propiedades
    //Nombre
	public function getNombre() 
	{
		return $this->nombre;
	}
			
	public function setNombre($nombre)
	{
		$this->nombre = $nombre;
	}

	//Apellido
	public function getApellido() 
	{
		return $this->apellido;
	}
			
	public function setApellido($apellido)
	{
		$this->apellido = $apellido;
	}

	//Edad
	public function getEdad() 
	{
		return $this->edad;
	}
			
	public function setEdad($edad)
	{
		$this->edad = $edad;
	}

	//Sexo
	public function getSexo() 
	{
		return $this->sexo;
	}
			
	public function setSexo($sexo)
	{
		$this->sexo = $sexo;
	}

    //Métodos
	public function soyUnMetodo()
	{
 		echo "Soy un método de la clase: " . __CLASS__ . ".<br /> Me llamo: <b>" . $this->getNombre() . " " . $this->getApellido() . "</b> y tengo <b>" . $this->getEdad() . "</b> años. <br /> Género: <b>" . $this->getSexo() . "</b>";

	}

}

Ahora, ¿cómo usamos nuestra recién declarada clase? Lo primero que tenemos que hacer es instanciar nuestro objeto para luego poder pasarle o escribir los atributos correspondientes a través de las propiedades. Esto lo podemos poner luego de declarar nuestra clase.


$objetoPersona = new Persona();

//Valores que pueden tomarse de un formulario
$nomb = "Pepe";
$apel = "Onguito";
$eda = 25;
$sex = "Masculino";


//Escribimos los atributos a través de la propiedad set de cada atributo
$objetoPersona->setNombre($nomb);
$objetoPersona->setApellido($apel);
$objetoPersona->setEdad($eda);
$objetoPersona->setSexo($sex);
 
 //Invocamos al método que creamos y vemos el resultado
$objetoPersona->soyUnMetodo();

Vamos a nuestro navegador, ponemos la dirección de nuestro ejercicio y nos tendría que quedar algo así:

resultadoEjercicio

Como podemos ver las palabras que están en negrita son las que establecimos luego de instanciar el objeto y si ves en la definición del método “soyUnMetodo()” se puede ver como a través de la propiedad “get” de cada atributo fuimos invocando al valor de cada uno de los atributos. Por eso es que cuando llamamos al método nos muestra los valores correspondientes.

Hoy llegamos hasta aquí para seguir en la próxima entrega con más información. Como siempre digo gracias por leerme, comentar, compartir y seguirme! Si te ha sido de utilidad no dudes en compartirlo con tus amigos! Cualquier duda puedes comentarla debajo! Gracias! Saludos! 🙂

Puedes compartir nuestro post en los siguientes medios:

Emi Garin es una programadora y diseñadora web apasionada por las nuevas tecnologías y el constante aprendizaje. Estudió analista y programador superior de sistemas y le encanta la cocina y la pastelería.

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *