Clase y objeto en PHP

¿Qué es una clase y un objeto?

En el modelo de Programación Orientada a Objetos (POO) se intenta programar lo más parecido al mundo real, con clases y objetos. Luego, los términos “clase” y “objeto” serán fundamentales en POO.

Los objetos se crean a partir de las clases, que son el punto clave de la POO. En cambio, las clases describen lo que será un objeto, ya que las clases están separadas de los objetos.  Por tanto, las clases serán como una descripción, una definición o un esquema de los objetos.

clase

En la imagen anterior Coche es una clase, que define las características de un coche genérico y cómo funciona. Sin embargo, miCoche azul es un objeto específico, o dicho con otras palabras, una instancia de Coche.

Propiedades y métodos en una clase

En PHP, las clases pueden incluir variables llamadas propiedades para definir las características o atributos de los objetos. Las clases también pueden tener métodos, que definen cómo se comporta un objeto.

Las clases se definen con la palabra clave class, seguida del nombre de la clase en mayúscula. Esto último es por convención.

Veamos algunos ejemplos.

class Persona {
   public nombre;       // Es una propiedad. Accesible desde el objeto
   public $edad;        // Es una propiedad. Accesible desde el objeto
   private $sexo;       // Es otra propiedad. Accesible desde la clase

   // El método constructor de la clase
   public function __construct(nombre, $edad) {
      $this -> nombre = $nombre;
      $this -> edad = $edad;
   }

   // El método destructor
   public function __destruct() {
      echo "Objeto destruido";
   }

   // Es un método setter para poner la propiedad privada sexo
   public function setSexo($sexo) {
      $this -> sexo = $sexo;
   }

   // Es un método getter para retornar la propiedad privada sexo
   public function getSexo() {
      return $this -> $sexo;
   }

   // Es un método de la clase
   public function saludar(){  
      echo "Hola, mundo!"
   }
}

Resumiendo, la palabra clave public especifica que el método saludar() es accesible desde cualquier parte del código. Y por otra parte, private significa lo contrario, esto es, que solo es accesible dentro de la clase.

Crear objetos

Cuando creamos un objeto estamos instanciando un objeto. Para instanciar un objeto, usaremos la palabra clave new.

$juan = new Persona();

En la línea anterior, $juan es un objeto de la clase Persona.

Para acceder a las propiedades y a los métodos de un objeto, usaremos la flecha-constructor ->:

$juan -> edad = 45;
echo $juan -> edad;           // El resultado es 45
$juan -> saludar();           // El resultado es "Hola, mundo!"
$juan -> setSexo("Hombre");   // Pone el sexo "Hombre" a $juan
$juan -> getSexo();           // El resultado es "Hombre"

El resultado la sentencia anterior es el valor de la propiedad edad para el objeto $juan.

La palabra clave $this

En primer lugar, $this es una pseudovariable, que es una referencia a la llamada de un objeto. Cuando se usa en un método, usará el objeto nombrado, esto es, instanciado fuera de la clase:

class Perro {
   public $piernas = 4;    // Es una propiedad
   // Es un método
   public function tener() {
      echo $this -> piernas;
   }
}

$perro1 = new Perro();
$perro1 -> tener()        // El resultado es 4

$perro2 = new Perro();
$perro2 -> piernas = 2;
$perro2 -> tener();       // El resultado es 2

El método constructor

Sirve para la inicialización de un objeto antes de usarse.

Así, el método constructor de la clase Persona:

public function __construct(nombre, $edad) { 
   $this -> nombre = $nombre; $this -> edad = $edad; 
}

$persona1 = new Persona("Miguel", 44); // Inicializa $persona1

El método destructor

Por último, para destruir un objeto usaremos la función de PHP unset(), que elimina cualquier tipo de variable de la memoria, incluso un objeto. Esto es útil para liberar memoria en nuestro script.

 // Destruimos el objeto
 unset($persona);

Entonces, aparecerá el texto “Objeto destruido”.

Dejaremos para otra entrada, los métodos getter y setter.

También puede interesarte

Clases y objetos en JavaScript

 

Deja un comentario

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