Programación orientada a objetos con PHP (II), la palabra this.

palabra this en Programacion orientada a objetos

 

Programación orientada a objetos (POO) con PHP (II), la palabra clave ‘this’.

En la Programación Orientada a Objetos, hay ocasiones en las que resulta útil referirse al objeto desde el que se está ejecutando un método.

En esas ocasiones se puede usar la referencia especial de objeto this, pero siempre dentro de un método no estático.

Esta referencia se suele usar para pasar una referencia al objeto actual como un parámetro para otros métodos.

En el primer tutorial de esta serie , aprendimos cómo agrupar el código relacionado con un tema determinado en una sola clase.

Como ejemplo, escribimos una clase Coche que agrupa el código que maneja automóviles.

class Coche { 
public $comp; 
public $color = 'beige' ; 
public $techoSolar = true; 
public function hola() { 
return "beep" ; 
} 
}

Creamos dos objetos fuera de la clase para poder usar su código.

$bmw = new Coche(); 
$mercedes = new Coche();

 

Utilizando la palabra clave $ this

La palabra clave $this indica que usamos los propios métodos y propiedades de la clase, y nos permite tener acceso a ellos dentro del alcance de la clase.

La palabra clave $this nos permite acercarnos a las propiedades y métodos de la clase desde dentro de la clase utilizando la siguiente sintaxis:

  • Solo la palabra clave $ this comienza con el signo $ , mientras que los nombres de las propiedades y métodos no comienzan con ella.
$this -> nombrePropiedad; 
$this -> nombreMetodo();

 

Vamos a ilustrar lo que acabamos de decir en la clase Coche . Habilitaremos el método hola() para que se acerque a las propiedades de la clase usando la palabra clave $this .

Para acercarse a la propiedad $comp usamos:

$this -> comp

Para acercarse a la propiedad $color  usamos:

$this -> color

 

Así es como se ve el código:

class Coche { 
// propiedades 
public $comp; 
public $color = 'beige' ; 
public $techoSolar = true; 
public function hola() { 
return "Beep, soy un <i>" . $this -> comp . "</i>, y soy de color <i>" . $this -> color ; 
} 
}

 

Creemos dos objetos de la clase:

$bmw = new Coche(); 
$mercedes = new Coche();

 

y establezca los valores para las propiedades de clase:

$bmw -> comp = "BMW" ; 
$bmw -> color = "azul" ; 
$mercedes -> comp = "Mercedes Benz" ; 
$mercedes -> color = "verde" ;

 

Ahora podemos llamar al método hola() para el primer objeto de automóvil:

echo $bmw -> hello();
 

Resultado:
Beep Soy un BMW y soy azul .

Y para el segundo objeto del auto.

echo $mercedes -> hello();
 

Resultado:
Beep Soy un Mercedes Benz , y soy de color verde .

Este es el código que hemos escrito en este tutorial:

class Coche{ 
// propiedades 
public $comp; 
public $color = 'beige' ; 
public $techoSolar = true; 

// Metodo para saludar 
public function hola() { 
return "Beep Soy un <i>" . $this -> comp . "</i>, y soy de color <i>" . $this -> color ; 
} 
} 

// Creamos un nuevo objeto 
$bmw = new Coche(); 
$mercedes = new Coche(); 

// Establecemos las propiedades. 
$bmw -> color = 'azul' ; 
$bmw -> comp = "BMW" ; 
$mercedes -> comp = "Mercedes Benz" ; 

// LLamamos al método hola() del objeto $bmw. 
echo $bmw -> hello();

 

Self y Parent

A parte de la palabra resrvada this, también disponemos de las palabras self y parent.

Cuando queramos acceder a una constante o método estático desde dentro de la clase, usamos la palabra reservada: self.

Cuando queramos acceder a una constante o método de una clase padre, usamos desde la clase extendida la palabra reservada: parent. Un caso típico es cuando en una clase extendida se sobreescribe el mismo método eliminando las definiciones y cambiando su visibilidad del método de la clase padre,

  • Diferencia entre $this y self::

Uno usa $this para hacer referencia al objeto (instancia) actual, y se utiliza self:: para referenciar a la clase actual.

Se utiliza $this->nombre para nombres no estáticos y  self::nombres para nombres estáticos.

<?php
	class funcion {
		private $valor_no_estatico = 100;
		private static $valor_estatico = 200;

		function __construct() {
			echo $this-$valor_no_estatico;
                        echo self::$valor_estatico;
		}
	}
?>

 

Conclusión

Hemos aprendido cómo usar la palabra clave $this para obtener las propiedades y métodos de la clase desde dentro de la propia clase. 

En el próximo post trataremos el encadenamiento de métodos y propiedades.

Compartir esta entrada.

Deja una respuesta

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

CAPTCHA ImageChange Image