41-Clases y objectos




Classes and Objects

Una clase es una plantilla para objetos, y un objeto es una instancia de clase.

OOP Case

Supongamos que tenemos una clase llamada Fruit. Una fruta puede tener propiedades como el nombre, color y peso. Podemos definir variables como $name, $color y $weight para almacenar estos valores.

Cuando se crean objetos individuales (manzana, plátano, etc.), heredan todas las propiedades y comportamientos de la clase, pero cada objeto tendrá valores diferentes para sus propiedades.

Definir una Clase

Una clase se define mediante el uso de la palabra clave class, seguida por el nombre de la clase y un par de llaves { }. Dentro de las llaves se definen las propiedades y métodos de la clase.

🔹 Sintaxis

<?php
class Fruit {
  // El código va aquí...
}
?>
    

A continuación, declaramos una clase llamada Fruit que consta de dos propiedades ($name y $color) y dos métodos set_name() y get_name() para establecer y obtener la propiedad $name:

🔹 Ejemplo

<?php
class Fruit {
  // Propiedades
  public $name;
  public $color;

  // Métodos
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}
?>
    

Nota: En una clase, las variables se llaman propiedades y las funciones se llaman métodos.




Definir Objetos

Las clases no tienen utilidad sin los objetos. Podemos crear múltiples objetos a partir de una clase. Cada objeto tendrá todas las propiedades y métodos definidos en la clase, pero con valores de propiedad diferentes.

Los objetos de una clase se crean utilizando la palabra clave new.

🔹 Ejemplo 1: Creación de objetos

En el siguiente ejemplo, $apple y $banana son instancias de la clase Fruit:

<?php
class Fruit {
  // Propiedades
  public $name;
  public $color;

  // Métodos
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}

$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');

echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
    

🔹 Ejemplo 2: Añadiendo más métodos

En este ejemplo, añadimos dos métodos adicionales a la clase Fruit para establecer y obtener el color de la fruta:

<?php
class Fruit {
  // Propiedades
  public $name;
  public $color;

  // Métodos
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
  function set_color($color) {
    $this->color = $color;
  }
  function get_color() {
    return $this->color;
  }
}

$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
    



PHP - La palabra clave $this

La palabra clave $this se usa dentro de una clase para referirse al objeto actual. Solo está disponible dentro de los métodos de la clase.

🔹 Ejemplo 1: Definiendo una propiedad

En este ejemplo, creamos una clase Fruit con una propiedad $name:

<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
?>
    

🔹 Ejemplo 2: Modificar una propiedad dentro de la clase

Podemos cambiar el valor de una propiedad usando un método dentro de la clase con $this:

<?php
class Fruit {
  public $name;
  
  function set_name($name) {
    $this->name = $name;
  }
}

$apple = new Fruit();
$apple->set_name("Apple");

echo $apple->name;
?>
    

🔹 Ejemplo 3: Modificar una propiedad fuera de la clase

También podemos cambiar directamente el valor de la propiedad desde fuera de la clase sin necesidad de un método:

<?php
class Fruit {
  public $name;
}

$apple = new Fruit();
$apple->name = "Apple";

echo $apple->name;
?>
    



PHP - instanceof

El operador instanceof se usa para verificar si un objeto pertenece a una clase específica.

🔹 Ejemplo: Verificando la instancia de una clase

En el siguiente ejemplo, creamos un objeto $apple de la clase Fruit y usamos instanceof para comprobar si pertenece a esa clase:

<?php
class Fruit {
  // Clase vacía para el ejemplo
}

$apple = new Fruit();
var_dump($apple instanceof Fruit);
?>
    

Publicar un comentario

0 Comentarios